Algs4-1.4.44生日问题

1.4.44生日问题。编写一个程序,从命令行接受一个整数N作为参数并使用StdRandom.uniform()生成一系列0至N-1之间的随机整数。通过实验验证产生第一个重复的随机数之前生成的整数数量为~sqrt(pi*N/2)。
答:
图片
public class E1d4d44
{
  public static void main(String[] args)
  {
    for (int i=2;i<=10000000;i=i+i)
    {
    int[] data=new int[i];
    int count=0;
    boolean notRepeart=true;
    while (notRepeart)
    {
      int r=StdRandom.uniform(i);
      if(data[r]==0)
      {
        count++;
        data[r]=1;
      }
      else
      {
        notRepeart=false;
      }
    }//end while
    StdOut.printf("N=%9d count=%7d sqrt(pi*N/2)=%6.1f ",i,count,Math.sqrt(Math.PI*i/2));
    }//end for
  }//end main
}//end class
原文地址:https://www.cnblogs.com/longjin2018/p/9854601.html