天天看點

java 語言實作的随機數生成算法

package MyMath;

//生成随機數  調用的是系統的方法

public class random {

public static void main(String args[])

{

Random random=new Random(5);

for(int i=0;i<10;i++)

System.out.println(random.nextInt());

}

  引用java 類庫的實作方法

  下面自己寫随機,,了解一下種子數,,其實對同一個種子生成的随機數是相同的,,但是種子數是不對更新的

public class random1 {

double []r=new double[2];

r[0]=5.0;

System.out.println(rand1(r));

public static double rand1(double []r)

double temp1,temp2,temp3,p,base;

base=256.0;

int  a=17,b=139;

temp1=r[0]*17+139;

temp2=(int)(temp1/256);

temp3=temp1-temp2*base;

r[0]=temp3;

p=temp3/256;

return p;

//基本思想 就是   遞推法  r[i]=mod(a*r[i-1],base);  随機數 p=r[i/base;

//這個随機數 确實是随機的  但是缺陷就是它并不符合 正态分布  種子的選取會影響後來的分布的

 引用一些公式就實作了符合正态分布的

public class random2 {

System.out.println(randZT(2.0,3.5,r));

//符合正态分布的随機算法

/*

*

*/

public static double randZT(double u,double t,double []r)

int i;

double total=0.0;

double result;

for(i=0;i<12;i++)

total+=rand1(r);

result=u+t*(total-6.0);

return result;

最新内容請見作者的GitHub頁:http://qaseven.github.io/