>  기사  >  백엔드 개발  >  각 루프 반복에서 동일한 난수를 얻는 이유는 무엇입니까?

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

DDD
DDD원래의
2024-11-04 11:50:02165검색

Why Do I Get the Same Random Numbers in Each Loop Iteration?

왜 각 루프 반복에서 동일한 난수를 얻나요?

루프에서 srand(time(0) ) 함수, 고유한 난수를 생성하려고 합니다. 그러나 관찰해 보면 carSetter 및 결정자 변수가 각 루프 실행 내에서 일관되게 동일한 값을 인쇄한다는 것을 알 수 있습니다.

이 동작은 srand() 함수의 특성에 기인합니다. 호출되면 srand()는 지정된 매개변수를 기반으로 난수 생성기의 시드를 초기화합니다. 이 경우 현재 시간을 초 단위로 나타내는 time(0)이 사용됩니다. 그러나 루프가 신속하게 실행되므로 time(0) 값은 루프 반복 전체에서 동일하게 유지됩니다. 결과적으로 시드가 변경되지 않아 매번 동일한 의사 난수 시퀀스가 ​​생성됩니다.

이 문제를 해결하려면 프로그램 시작 시 srand()를 한 번만 호출하여 초기화하는 것이 좋습니다. 루프 실행 중에 변경되지 않는 변수 또는 값이 있는 시드입니다. 이렇게 하면 각 반복마다 고유한 난수가 생성됩니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.