> 백엔드 개발 > C++ > 루프 반복 내에서 내 난수가 동일한 이유는 무엇입니까?

루프 반복 내에서 내 난수가 동일한 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-04 10:02:01
원래의
655명이 탐색했습니다.

Why are My Random Numbers the Same Within Loop Iterations?

루프 반복 내 동일한 난수

15번 실행되는 루프에서는 각 반복마다 dh.setDoors()를 호출했습니다. 이 함수 내에서 srand(time(0))이 호출되어 의사 난수 생성을 시작합니다. 그러나 루프 내에서 rand()에 대한 후속 호출은 15번의 반복 전체에 걸쳐 carSetter 및 결정자의 상수 값을 생성합니다.

이 동작은 srand(time(0))이 난수 생성기 기반의 시드를 설정하기 때문에 발생합니다. 현재 시간에. 루프가 빠르게 실행되므로 time(0)은 매번 동일한 값을 반환하므로 결과적으로 동일한 의사 난수 시퀀스가 ​​생성됩니다.

이 문제를 극복하려면 srand(time(0)만 호출하는 것이 좋습니다. )) 프로그램 시작 시 한 번, 일반적으로 다음과 같은 프로세스를 따릅니다.

<code class="c++">srand(time(0));

for (int i = 0; i < 15; i++) {
    carSetter = rand() % 3 + 1;
    decider = rand() % 2 + 1;
}</code>
로그인 후 복사

이 초기화를 한 번만 수행하면 의사 난수 생성기가 각 반복에 대해 고유한 일련의 숫자를 생성합니다. 루프를 실행하여 carSetter 및 결정자 값의 예상 변화를 산출합니다.

위 내용은 루프 반복 내에서 내 난수가 동일한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿