#android #random
#Android #Случайный
Вопрос:
Я создал игру Yahtzee, в которой игрок бросает 5 кубиков и использует генератор случайных чисел для определения значений кубиков. Кости кажутся достаточно случайными, когда я запускаю их на эмуляторе, но по какой-то причине, когда я запускаю его на некоторых телефонах, игроки продолжают получать одинаковые значения для многих костей: слишком часто, чтобы это было совпадением. Например, если на одной кости выпадает 4, она часто выпадает на 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]);
}
}
}
Ответ №1:
Вы создаете экземпляр генератора случайных чисел в цикле, перемещаете его наружу:
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]);
}
}
}