我做了一个Yahtzee游戏,玩家掷5个骰子并使用随机数生成器来确定骰子值。当我在模拟器上运行时,骰子似乎是随机的,但出于某种原因,当我在某些手机上运行它时,玩家会继续为许多骰子获得相同的值:太经常让它成为巧合。例如,如果一个骰子上出现一个骰子,则通常会出现3或4个其他骰子。使问题难以找到的原因是它不一致:偶尔投掷是正常的。我使用以下代码确定所有5个骰子的随机数:
public void randomDize(){
int randSpot;
for(int i = 0; i < 5; i++){
Random randomGenerator = new Random();
randSpot = randomGenerator.nextInt(6);
if(DieSet[i]== 0){
DieVal[i]=randSpot;
imageButtons[i].setBackgroundResource(imageRes[randSpot]);
}
}
}
答案 0 :(得分:6)
您在循环中实例化随机生成器,将其移到外面:
private Random randomGenerator = new Random();
//or even:
// private static Random randomGenerator = new Random();
public void randomDize(){
int randSpot;
for(int i = 0; i < 5; i++){
randSpot = randomGenerator.nextInt(6);
if(DieSet[i]== 0){
DieVal[i]=randSpot;
imageButtons[i].setBackgroundResource(imageRes[randSpot]);
}
}
}