首页 > 编程知识 正文

计算随机事件概率的基本方法,java抽奖算法

时间:2023-05-06 15:25:04 阅读:107251 作者:1742

随机数的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;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。