zoukankan      html  css  js  c++  java
  • Algs4-1.1.37糟糕的打乱

    1.1.37糟糕的打乱。假设在我们的乱序代码中你选择的是一个0到N-1而非i到N-1之间的随机整数。证明得到的结果并非均匀地分布在N!种可能性之间。用上一题中的测试检验这个版本。


    public class ShuffleTest
    {
        public static void main(String[] args)
        {
           int M=Integer.parseInt(args[0]);
           int N=Integer.parseInt(args[1]);
           int[] a=new int[M];
           int[][] Info=new int[M][M];
           //N次打乱
           for(int k=0;k<N;k++)
           {
                //每次打乱前数组重新初始化为a[i]=i
               for(int i=0;i<M;i++)
               a[i]=i;
                //打乱
               shuffle(a);
               //打乱后i行的值落到j列的次数增1
               for(int i=0;i<a.length;i++)
                   Info[a[i]][i]++;
           }
           //打印M*M数组
           printArray(Info);
          
       }

        //打乱数组
        public static void shuffle(int[] a)
        {
            int N=a.length;
            for (int i=0;i<N;i++)
            {
              int r=i+StdRandom.uniform(N-i);
              int temp=a[i];
              a[i]=a[r];
              a[r]=temp;
            }
        }//结束打乱
       

        //打印数组
        private static void printArray(int[][] array)
        {
          int rowLen=array.length;
          int colLen=array[0].length;
          StdOut.printf(" ");
          for (int col=0;col<colLen;col++)
              StdOut.printf("%5d",col);
          StdOut.printf(" ");
          //
          for (int row=0;row<rowLen;row++)
          {
              StdOut.printf("%d",row);
              for (int col=0;col<colLen;col++)
                    StdOut.printf("%5d",array[row][col]);
              StdOut.printf(" ");
          }
        }
    }
    图片

  • 相关阅读:
    (转)接口100
    (转)WordPress常用模板函数 修改或自制WordPress主题必备
    (转)Memcached 之 .NET(C#)实例分析
    Ubuntu(Linux) + mono + xsp4 + nginx +asp.net MVC3 部署
    urls.py路由系统分发的本质
    Django-缓存
    Django-信号
    MySQL表按月切割
    通过ModelForm实现主机添加和编辑
    字定义JSON序列化支持datetime格式序列化
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9848747.html
Copyright © 2011-2022 走看看