генератор случайных чисел Android недостаточно случайный

#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]);
        }
    }       
}