Java 如何在一定的时间间隔内完全随机生成数字
我有一种生成方法,可以生成1到8之间的数字。但问题是,这种方法通常生成数字1-7,而几乎从不生成数字8。我的问题是,如何在一定的时间间隔内生成随机数,但所有数字出现的时间几乎相同 编辑: 我的号码发生器Java 如何在一定的时间间隔内完全随机生成数字,java,random,generator,Java,Random,Generator,我有一种生成方法,可以生成1到8之间的数字。但问题是,这种方法通常生成数字1-7,而几乎从不生成数字8。我的问题是,如何在一定的时间间隔内生成随机数,但所有数字出现的时间几乎相同 编辑: 我的号码发生器 public int generateNumber() { Random r = new Random(); return r.nextInt(8 - 1) + 1; } “几乎从来没有数字8”:如果发电机曾经产生8,那就是出了问题 nextInt给出了一个介于0和6(包括边
public int generateNumber() {
Random r = new Random();
return r.nextInt(8 - 1) + 1;
}
“几乎从来没有数字8”:如果发电机曾经产生8,那就是出了问题
nextInt给出了一个介于0和6(包括边框)之间的数字,加上1就得到了间隔[1,7]
要获取[1,8]中的数字,可以使用
r.nextInt(8) + 1
随机生成器生成一个“在0(包括)和指定值(排除)之间均匀分布的int值”。请参阅文档: 你可以做:
random.nextInt(max - min + 1) + min
应该没问题
或者
Random randomGenerator = new Random();
for (int idx = 1; idx <= NUMBER_OF_INTEGERS_YOU_WANT; idx++){
int randomInt = randomGenerator.nextInt(8)+1;
CODE_HERE
}
Random Random generator=new Random();
对于(intidx=1;idx您需要
return r.nextInt(8) + 1;
它将返回从1到8的值。因此它从0开始,并生成最大正常运行次数n-1,即根据的7
在您的例子中,您有r.nextInt(8-1)
,它的计算结果为r.nextInt(7)
,因此它将从0-6生成数字,并且在上面的api中将1添加到数字,因此您的范围是1-7,而不是1-8。您对Java内置的随机生成器有问题吗,或者想自己修理?如果是后者,你需要展示你的发电机的外观。我的发电机和我的发电机都有问题。这是我的code@Traabefi:请查看我的更新答案。除了范围错误之外,您不应该调用Random r=new Random()
反复调用。调用一次并重新使用它。您可能会发现每次调用它都会产生少于随机的结果。这就是它导致问题的原因。您的代码将返回0到8(包括)之间的整数。OP需要1到8(包括)之间的整数。