java - 为什么我的随机数不是那么随机?

标签 java random

int totalRecs = getTotalRecs(); // returns '13'
int MAX_RECS_PER_LOOKUP = 10;
Random rand = new Random();
int start = (totalRecs > Utl.MAX_RECS_PER_LOOKUP) ? rand.nextInt(totalRecs-Utl.MAX_RECS_PER_LOOKUP) : 0;
results = this.getNewRecs(filter, start, start+1);

我正在使用此随机数逻辑根据表行偏移量(startstart+1)从数据库中检索记录。

但由于某些原因它不断重复相同的数字:start 值为 0 和 start 值为 3

我尝试对 Random 对象进行播种,但没有任何区别:

long seed = System.currentTimeMillis();
rand.setSeed(seed);

最佳答案

rand.nextInt(n) 方法返回一个介于 0(含)和 n(不含)之间的值。

在您的代码中,如果 totalRecs 是 13,并且 Utl.MAX_RECS_PER_LOOKUP 是 10(我假设这个基于 MAX_RECS_PER_LOOKUP 值在你的代码片段中,但我可能是错的),然后这段代码:

rand.nextInt(totalRecs-Utl.MAX_RECS_PER_LOOKUP);

应该返回一个介于 0 和 2 之间的随机数。

我不确定这是否是您真正想要的?

关于java - 为什么我的随机数不是那么随机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4154933/

相关文章:

java - 为什么 Java 中的每个对象都隐式扩展 java.lang.Object 类?

java - MongoDB:使用唯一索引更新插入

javascript - 页面刷新上的随机标题图像,CSS jquery javascript?

java - Java 中的客户端类错误

java - Android WebView 从特定域中删除 cookie

java - 为什么 JVM tableswitch/lookupswitch 指令的格式有 0 到 3 个字节的填充?

javascript - 生成更大数字的概率更小的随机数

java - 如何生成随机图?

excel - 随机化一组值而不重复值索引

java - 对随机数数组进行排序