StdRandom库中的静态方法的实现--随机数产生

来源:互联网 发布:常州学美工设计 编辑:程序博客网 时间:2024/05/22 13:12

1、随机返回[a,b)之间的一个double值

 public static double uniform(double a,double b){       return a +StdRandom.random()*(b-a);  }

2、随机返回[0,N)之间的一个int值

public static int uniform(int N){       return(int) (StdRandom.random()*N);  }

3、随机返回[lo,hi)之间的一个int值

public static int uniform(int lo,int hi){       return  lo + StdRandom.uniform(hi-lo);  }

4、根据离散概率随即返回的int值(出现i的概率为a[i])

public static int discrete(double[] a){   double r=StdRandom.random();   double sum=0.0;   for(int i=0;i<a.length;i++)   {//a[]中各元素之和必须等于1      sum=sum+a[i];      if(sum>=r)return i;   }   return -1;}

5、随机将double数组中的元素排序

public static void shuffle(double[] a){  int N=a.length;  for(int i=0;i<N;i++)  {//将a[i]和a[i...N-1]中任意一个元素交换    int r=i + StdRandom.uniform(N-i);    double temp=a[i];    a[i]=a[r];    a[r]=temp;  }}
0 0