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

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

Susan Sarandon
Susan Sarandon원래의
2024-11-04 13:14:02198검색

Why Are My Random Numbers Always the Same in Each Loop Iteration?

각 루프 반복에서 서로 다른 난수 보장

코드에는 dh.setDoors를 호출하여 15회 반복되는 for 루프가 있습니다. () 각 반복에서. dh.setDoors()는 난수 생성기의 시드를 설정하는 srand(time(0))을 호출합니다. 이후에 난수가 필요할 때마다 carSetter = rand()%3 1 또는 결정자 = rand()%2 1을 사용하여 생성됩니다.

그러나 carSetter 및 결정자의 값은 그대로 유지되는 것을 확인했습니다. 15번의 반복 내내 동일합니다. 이는 각 반복 시작 시 srand(time(0))을 호출하면 시드가 동일한 값으로 설정되어 동일한 난수 시퀀스가 ​​생성되기 때문에 발생합니다.

의도된 동작은 carSetter 및 각 반복에서 서로 다른 난수를 생성하는 결정자입니다. 이는 다음과 같이 srand(time(0)) 호출을 루프 외부로 이동하여 달성할 수 있습니다.

srand(time(0));

for (int i = 0; i < 15; i++) {
    dh.setDoors();
}

이렇게 하면 srand(time(0))이 시작 시 한 번만 호출됩니다. 프로그램의 각 루프 반복 전에 새로운 난수 시퀀스가 ​​생성됩니다. 이는 각 루프에서 동일한 의사 난수가 생성되는 문제를 해결합니다.

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

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