生成随机对象以生成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个婴儿