有什么办法可以创建产生心脏的随机数?

时间:2020-06-21 14:11:05

标签: java android-studio random while-loop

我为游戏创建了代码,该游戏不断产生一颗额外的生命,但是我只希望它有时有发生的机会,我决定最好的方法是生成一个随机数,如果数字超过一定值会产生一颗心。

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循环在心脏中成功产生,但是当它被我的随机数生成器包围时,它将无法工作。

1 个答案:

答案 0 :(得分:0)

发生了什么事

在语句randHeartNum = new Random().nextDouble();中,将为每次循环迭代创建,使用和删除一个新的Random()实例。

根据JavaDocs,

public Random()创建一个新的随机数生成器。该构造函数将随机数生成器的种子设置为一个很可能与该构造函数的其他调用不同的值。

反复向构造函数发送垃圾邮件并调用nextDouble()方法可提供不均匀分布的值。

可以做什么:

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()