Есть ли способ создать случайное число, порождающее сердце? - PullRequest
0 голосов
/ 21 июня 2020

Я создал код для игры, которая постоянно порождает сердце как дополнительную жизнь, однако я хочу, чтобы это происходило только иногда, я решил, что лучшим подходом было бы сгенерировать случайное число, и если число превышает определенное значение, оно порождает сердце.

random = new Random();

    double randHeartNum = random.nextDouble();

    while (isPlaying == true) {

        if (randHeartNum < 0.050) {
            for (int i = 0; i < 1; i++) {
                Bird heart = new Bird(getResources());
                hearts[i] = heart;
            }
            randHeartNum = new Random().nextDouble();
        }
    }

for l oop успешно появляется в сердце, но когда оно окружено моим генератором случайных чисел, оно не работает.

1 Ответ

0 голосов
/ 21 июня 2020

Что произошло:

В операторе randHeartNum = new Random().nextDouble(); новый экземпляр Random () создается, используется и удаляется для каждой l oop итерации.

Согласно JavaDocs,

public Random() Создает новый генератор случайных чисел. Этот конструктор устанавливает для начального числа генератора случайных чисел значение, которое, скорее всего, будет отличаться от любого другого вызова этого конструктора. неравномерно распределены.

Что можно было сделать:

random = new Random();

    double randHeartNum = random.nextDouble();

    while (isPlaying == true) {

        if (randHeartNum < 0.050) {
            for (int i = 0; i < 1; i++) {
                Bird heart = new Bird(getResources());
                hearts[i] = heart;
            }
            randHeartNum = random().nextDouble();
        }
    }

Или

Использование Math.random() могло бы быть проще -

    double randHeartNum;

    while (isPlaying == true) {

        randHeartNum = Math.random();

        if (randHeartNum < 0.050) {
            for (int i = 0; i < 1; i++) {
                Bird heart = new Bird(getResources());
                hearts[i] = heart;
            }
        }
    }

Чтобы узнать больше:

Math.random ()

java .util.Random ()

...