我有一个生成方法,可以生成1到8之间的数字。但问题是这个方法经常会生成数字1-7,几乎没有数字8.我的问题是如何在一定的时间间隔内生成随机数字,但是所有数字大致是同一时间?如何在一定的时间间隔内纯粹随机生成数字
编辑:
我数发生器
public int generateNumber() {
Random r = new Random();
return r.nextInt(8 - 1) + 1;
}
我有一个生成方法,可以生成1到8之间的数字。但问题是这个方法经常会生成数字1-7,几乎没有数字8.我的问题是如何在一定的时间间隔内生成随机数字,但是所有数字大致是同一时间?如何在一定的时间间隔内纯粹随机生成数字
编辑:
我数发生器
public int generateNumber() {
Random r = new Random();
return r.nextInt(8 - 1) + 1;
}
随机发生器 “0(含)和规定值(不包括)之间均匀分布int值” 产生一个数字请参考文档:
http://docs.oracle.com/javase/7/docs/api/java/util/Random.html
你可以这样做:
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
}
“几乎从来没有8号”:如果发电机产生过8有什么不对。
nextInt给出一个介于0和6之间的数字(包含边界),并加上一个给出区间[1,7]。
要获得在[1,8]可以使用
r.nextInt(8) + 1
这就是它导致问题的原因。 – Traabefi
你需要像
return r.nextInt(8) + 1;
将从1返回值8。因此,它从0开始,并产生数最多uptil N-1即7按this。
在你的情况下,你有r.nextInt(8 - 1)
其计算结果为r.nextInt(7)
,所以它会产生0-6的数字,并且最重要的是你要从api上面加1,所以你的范围是1-7而不是1- 8。
您是否遇到Java内置随机生成器的问题,或者希望修复自己的问题?如果是后者,则需要显示发电机的外观。 –
代码在哪里? – SMA
我有问题与一般发电机和我的。这里是我的代码 – Traabefi