我试图为我的作业部分生成随机double
问题是
"每周,每个10周龄或以上的女性Guppy有25%的机会产卵"
我想生成一个随机double
来确定每个雌性Guppy是否应该产卵。
到目前为止我的代码:
Random r = new Random();
if (isFemale == true && getAgeInWeeks() >= 10) {
//?
}
答案 0 :(得分:1)
根据你的问题,我没有看到任何理由产生随机翻倍。你需要的是一个0到3之间的整数,其中每个数字占产卵的25%。
_get_attr
查看此链接以获取有关随机的更多信息: Random (Java Platform SE 7
答案 1 :(得分:1)
要生成随机double
,您可以查看this question,但是,通过生成随机int
可以更轻松地解决此问题。
在您的情况下,在int
到0
之间生成3
是您想要的,因为检查它是0
将是25%的时间(1)值/ 4可能值= 25%)。
编辑:如果您还要生成一个随机数,以查看Guppy将像以前一样使用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.");
}
}
我使用ThreadLocalRandom
因为this answer支持它更直接
如果您不使用Java 1.7+,请使用Random#nextInt(int)
,而不是that answer所示。