srand(time(NULL));
for(i = 0; i < 100; i++)
{
int randomNumber = (rand() % 100) + 1 // gets a random number from 0 - 100.
// do stuff
}
В настоящее время у меня есть переменная случайного числа, которая хранит число от 0 до 100 на каждой итерации цикла for, а приведенный ниже код затем выполняет действия с этой переменной случайного числа. Однако я заметил, что с каждой итерацией цикла иногда генерируется одно и то же случайное число, а иногда оно генерирует число, очень близкое к тому, которое я уже сгенерировал. Например: когда i = 1
randomNumber может быть 50, но когда i = 2
, это может быть 51. Это очень раздражает для того, что я кодирую. Есть ли способ сделать так, чтобы, если он генерирует 50 в первый раз, во второй раз он должен был генерировать целое число 2 от только что сгенерированного. Например. если он просто генерирует 50, то во второй раз он не может сгенерировать 48,49,50,51,52, но все равно генерирует от 0 до 100, просто пропуская эти числа. Затем он повторяет то же самое, когда генерируется новый randomNumber.
srand(time(NULL))
, вероятно, является причиной дубликатов, все уже является улучшением: D - person Antti Haapala   schedule 03.05.2019srand(time(NULL))
не является причиной дубликатов. В вопросе ясно показан цикл, выбирающий 100 сэмплов без промежуточныхsrand
, и он спрашивает об сэмплах «с каждой итерацией цикла», а не с различными выполнениями всего цикла или программы. - person Eric Postpischil   schedule 03.05.2019