生成随机对象以生成java

生成随机对象以生成java,java,Java,我正在尝试为我的作业的这一部分生成一个随机的double。 问题是 “每周,每只10周大或更大的雌性孔雀鱼都有25%的产卵机会” 我想随机生成一个double,以确定每只雌性孔雀鱼是否应该产卵 到目前为止,我的代码是: Random r = new Random(); if (isFemale == true && getAgeInWeeks() >= 10) { //? } 我看不出有任何理由根据你的问题生成一个随机双精度。你需要的是一个从0到3的整数,其中每个

我正在尝试为我的作业的这一部分生成一个随机的
double

问题是 “每周,每只10周大或更大的雌性孔雀鱼都有25%的产卵机会”

我想随机生成一个
double
,以确定每只雌性孔雀鱼是否应该产卵

到目前为止,我的代码是:

Random r = new Random();
if (isFemale == true && getAgeInWeeks() >= 10) {
    //?
}

我看不出有任何理由根据你的问题生成一个随机双精度。你需要的是一个从0到3的整数,其中每个数字占产卵的25%

Random r = new Random();
if (isFemale == true && getAgeInWeeks() >= 10) {
    // Generate a random integer in [0,3]
    // Since there is a 25% or 1/4 chance 
    if(Math.abs(r.nextInt()) % 4 == 1){
       //Note that the 1 in the condition can be replaced by any 
       // integer in [0,3]
       //Put spawning code here 
    }
}
请查看此链接以了解有关随机变量的更多信息:

要生成随机的
双精度
,您可以查看,但是,通过生成随机的
int
s,可以更容易地解决此问题

在您的情况下,您需要在
0
3
之间生成
int
,因为检查它是否为
0
将在25%的时间内为真(1个值/4个可能值=25%)

编辑:如果您还想生成一个随机数来查看一只孔雀鱼将有多少个卵,请使用
threadLocalRandomInstance.nextInt(int-bound)像以前一样

这些约束可以转换为如下代码:

import java.util.concurrent.ThreadLocalRandom;

public class Test {
    public static void main(String[] args) {        
        ThreadLocalRandom tlr = ThreadLocalRandom.current();

        int num = tlr.nextInt(3 + 1); //Bound is exclusive so add 1.
        int spawn;

        if(num == 0) {
            spawn = tlr.nextInt(100 + 1); //Again, bound is exclusive so add 1.
        } else spawn = 0;

        System.out.println("This guppy had " + spawn + " spawn.");
    }
}
我使用,因为它更直接,由支持。

如果您没有使用Java 1.7+,请改用。

当您查看
Random
上的方法时,您认为以25%的概率获得哪个方法最合适?你为什么这么认为?提示:大多数的
nextXxx()
方法都是合适的。是的,我是这么想的,但是我真的不知道如何将它输入到编码中,我随机读了一下,下一个确实出现了,但是我混淆了使用
nexttint(4)
而不是使用模运算符的
nexttint()
。前者是正确的随机值,但如果Integer.MAX_值不是最大值的倍数,则后者不是。基本上说,每次产卵0到100个婴儿