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);
我正在使用此随机数逻辑根据表行偏移量(start
到 start+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/