【问题标题】:Is there a way I can create a random number that spawns a heart?有没有办法可以创建一个随机数来产生一颗心?
【发布时间】:2020-06-21 14:11:05
【问题描述】:

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

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

【问题讨论】:

    标签: java android-studio random while-loop


    【解决方案1】:

    发生了什么:

    在语句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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2015-09-10
      • 2021-04-11
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多