Rand() % 14가 균일하지 않은 값을 생성합니다
특정 범위 내에서 임의의 값을 생성하려고 시도할 때 일부 프로그래머는 다음과 같은 문제를 겪을 수 있습니다. rand() 함수를 사용할 때 비정상적인 동작이 발생합니다. 보고된 일반적인 문제 중 하나는 rand() % 14가 지속적으로 6 또는 13의 값을 반환한다는 것입니다.
이 현상을 이해하려면 rand()의 기본 알고리즘을 자세히 살펴보는 것이 중요합니다. Apple 컴퓨터에 사용되는 특정 구현은 MWC(Multiply-with-Carry) 생성기를 기반으로 합니다. 불행하게도 이 생성기의 약점은 7의 배수, 특히 승수 값이 16807이라는 것입니다.
결과적으로 srand() 초기화 직후 생성된 처음 몇 개의 난수의 하위 비트는 제한적입니다. 엔트로피. rand() % 14의 경우 하위 비트는 항상 동일한 값을 가지므로 6 또는 13의 두 가지 가능한 결과만 발생합니다.
이 문제를 완화하려면 간단한 해결책은 삭제하는 것입니다. 초기화 후 생성된 처음 몇 개의 난수입니다. 결과를 사용하지 않고 rand()를 몇 번 더 호출하면 알고리즘의 내부 상태가 더욱 혼란스러워지고 값의 균일한 분포가 복원됩니다.
위 내용은 `rand() % 14`가 균일하지 않은 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!