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);
什么是Utl.MAX_RECS_PER_LOOKUP?可能问题不是rand.nextInt,而是您的输入将它限制为可能整数的一小部分。 – 2010-11-11 13:39:35
发生了一些非常奇怪的事情。如果totalRecs真的是13,那么你不应该得到3(因为你传递3 nextInt,这是唯一的上限)。你可以尝试打印totalRecs的值并检查它是你的想法吗?为什么您使用Utl.MAX_RECS_PER_LOOKUP而不是您刚刚设置的MAX)RECS_PER_LOOKUP? – 2010-11-11 13:39:42