java 語言實(shí)現(xiàn)的隨機(jī)數(shù)生成算法
package MyMath; import java.util.Random; //生成隨機(jī)數(shù) 調(diào)用的是系統(tǒng)的方法 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 類庫的實(shí)現(xiàn)方法
下面自己寫隨機(jī),,了解一下種子數(shù),,其實(shí)對同一個種子生成的隨機(jī)數(shù)是相同的,,但是種子數(shù)是不對更新的
package MyMath; public class random1 { public static void main(String args[]) { double []r=new double[2]; r[0]=5.0; for(int i=0;i<10;i++) { 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); 隨機(jī)數(shù) p=r[i/base; //這個隨機(jī)數(shù) 確實(shí)是隨機(jī)的 但是缺陷就是它并不符合 正態(tài)分布 種子的選取會影響后來的分布的 } } |
引用一些公式就實(shí)現(xiàn)了符合正態(tài)分布的
public class random2 { public static void main(String args[]) { double []r=new double[2]; r[0]=5.0; for(int i=0;i<10;i++) { System.out.println(randZT(2.0,3.5,r)); } } //符合正態(tài)分布的隨機(jī)算法 /* * * */ 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); 隨機(jī)數(shù) p=r[i/base; //這個隨機(jī)數(shù) 確實(shí)是隨機(jī)的 但是缺陷就是它并不符合 正態(tài)分布 種子的選取會影響后來的分布的 } 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; } } |