use*_*276 2 java random android probability
提前感谢花时间看我的问题.任何有同样问题的人都希望我们能得到解决方案......
所以基本上我有一个应用程序同时旋转2个硬币并显示结果.
这种方法产生第一枚硬币......
public void coinResult1(){
ImageView coin1View = (ImageView) findViewById(R.id.coin1);
Random r = new Random();
int coin1result = r.nextInt(2);
if (coin1result == 0){
coin1View.setBackgroundResource(R.drawable.coinheads);
coinresult1 = 0;
}
else if (coin1result == 1) {
coin1View.setBackgroundResource(R.drawable.cointails);
coinresult1 = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
这是第二枚硬币
public void coinResult2(){
ImageView coin2View = (ImageView) findViewById(R.id.coin2);
Random r = new Random();
int coin2result = r.nextInt(2);
if (coin2result == 0){
coin2View.setBackgroundResource(R.drawable.coinheads);
coinresult2 = 0;
}
else if (coin2result == 1) {
coin2View.setBackgroundResource(R.drawable.cointails);
coinresult2 = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
这与按钮的onclick()相关联,该按钮将结果检查给玩家选择
public void checkResult(){
coinResult1();
coinResult2();
coinResult = coinresult1 + coinresult2;
if (coinResult == playerSelection){
playerWins();
buttonsReset();
}
else {
playerLost();
buttonsReset();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我唯一的问题是......两台1000台硬币的结果都是这样的... HeadsHeads 54%
HeadsTails 2%
尾巴尾巴44%
1000000次旋转的百分比大致相同
当每个硬币结果被分开计算时
COIN1头部53%尾部47%
COIN2头部48%尾部52%
现在我的朋友说他们的赔率有些不对了......因为HeadsTails不是很高的百分比,他预计每个组合随机接近33%
代码似乎有利于HeadsHeads和TailsTails或HeadsTails .....我已经尝试了几次并且持续获得低百分比的HeadsTails
任何人都可以说明最新情况......还有什么导致HeadsTails很少出来?
希望很快能收到回复
您重复实例化Random会破坏生成器的统计属性.
您需要创建一个实例并将其传递给您的函数.更好的是,在课堂上使用一个字段.
关于类的线程安全问题,请参考这个问题Random:Random class thread是否安全?.这似乎表明,你应该synchronize的nextInt电话.