随机数的java实现(概率算法)
有关具体问题的说明和C/C实现,请访问网站
3358 blog.csdn.net/liufeng _ king/article/details/8978740
公共类toss {
公共静态随机拷贝toss;
publicstaticinttosscoins (int number coins ) {
//随机扔硬币
int i=0;
int tosses=0;
coinToss=new Radom (;
for(I=0; I
//radom(2)=1表示表面,0表示背面
tosses=cointoss.random(2;
}
返回状态;
}
//*
*测试程序
*/
publicstaticvoidmain (string [ ] args ) {
//Radom coinToss=new Radom (;
int ncoins=10;
long ntosses=50000L;
//heads[i]是I次得到正面的次数
int i=0;
long[] heads=new long[ncoins 1];
int j;
输入位置;
//初始化数组头
for(j=0; Jj
heads[j]=0;
重复50000次模拟事件
for(I=0; I
头[ toss coins (n coins ) ];
System.out.println (;
//输出频率图
for(I=0; i=ncoins; I ) {
position=(int ) ) float ) heads[i]/ntosses*72;
system.out.print(''I;
for(j=0; Jj
System.out.print (' );
}
system.out.println('* ' );
}
}
}
class Radom {
私有长按; //当前种子
privatefinalstaticlongmultiplier=0x 5de ECE 66dl;
privatefinalstaticlongadder=0x bl;
privatefinalstaticlongmask=(1l 48 )-1;
//构建方法,自动产生种子
公共随机()。
this.seed=system.current time millis (;
}
//构建方法,默认值0意味着系统自动生成种子
公共随机(long seed ) {
if(seed==0) )
this.seed=system.current time millis (;
else
this.seed=seed;
}
生成[0.n-1]之间的随机整数
公共随机(intn ) {
if(n=0) )
thrownewillegalargumentexception (' nmustbepositive );
seed=(seed*multiplieradder ) mask;
返回((int ) ) seed17 ) %n );
}
//生成[ 0,1 ]之间的随机实数
公共双随机
returnrandom(Integer.MAX_VALUE )/(double ) integer.max_value;
}
}