«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему мои случайные числа согласованы внутри цикла?

Почему мои случайные числа согласованы внутри цикла?

Опубликовано 23 декабря 2024 г.
Просматривать:122

Why are my random numbers consistent within a loop?

Понимание согласованности случайных чисел в итерациях

В предоставленном фрагменте кода видно, что случайные числа, сгенерированные в рамках итерации цикла, остаются согласованными. В частности, переменные carSetter и decider сохраняют одни и те же значения на протяжении 15 итераций, несмотря на то, что цикл нацелен на создание уникальных значений.

Такое поведение возникает из-за размещения srand(time(0)) внутри цикла. . Он определяет последовательность псевдослучайных чисел, возвращаемых при последующих вызовах rand(). Проблема заключается в том, что time(0) обычно возвращает одно и то же значение во время выполнения цикла, что приводит к генерации согласованной серии случайных чисел.

Чтобы исправить эту проблему и обеспечить истинную случайность, необходимо имеет решающее значение для перемещения первоначального вызова srand(time(0)) за пределы цикла. При этом вы инициализируете генератор случайных чисел только один раз, гарантируя, что последовательность случайных чисел значительно варьируется на протяжении итераций. Следующий код демонстрирует это исправление:

srand(time(0)); // Called once at the program's start

for (int i = 0; i 

Эта модификация позволяет циклу генерировать разные случайные числа на каждой итерации, как и предполагалось. Обратите внимание, что нет необходимости вызывать srand() внутри цикла, поскольку генератор псевдослучайных чисел будет продолжать выдавать уникальные значения до тех пор, пока вы явно не сбросите его с помощью другого вызова srand().

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3