Понимание согласованности случайных чисел в итерациях
В предоставленном фрагменте кода видно, что случайные числа, сгенерированные в рамках итерации цикла, остаются согласованными. В частности, переменные 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