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, а скорее ваши входы ограничивают ее крошечным подмножеством возможных ints. –
Что-то очень странное. Если totalRecs действительно 13, то вы не должны получать 3 (поскольку вы передаете 3 на nextInt, и это эксклюзивный верхний предел). Можете ли вы попробовать распечатать значение totalRecs и проверить, что вы думаете? Почему вы используете Utl.MAX_RECS_PER_LOOKUP, а не MAX) RECS_PER_LOOKUP, который вы только что установили? –