Rand() % 14 값 6 또는 13만 생성: 미스터리 깨기
당면한 문제는 고유한 귀하가 제공한 답변에 설명된 대로 Apple 플랫폼에서 rand() 함수 구현 시 제한 사항이 있습니다. 기본 매개변수를 사용하면 rand()에서 사용하는 난수 생성기는 14로 나눌 때 엔트로피가 제한된 시퀀스를 생성하여 6과 13의 두 값 사이에서만 순환하게 됩니다.
이 문제를 해결하려면, 다음 단계를 수행할 수 있습니다.
-
Srand() 후에 Rand()를 여러 번 호출: 답변에서 제안한 대로 srand(time(NULL))을 호출한 후 rand()에서 생성된 처음 몇 개의 결과를 삭제하십시오. 이렇게 하면 6과 13만 생성하는 초기 주기가 제거됩니다.
-
다른 난수 생성기 사용: 위 방법으로 문제가 해결되지 않으면 다른 난수 생성기로 전환하는 것이 좋습니다. Mersenne Twister와 같이 더 나은 엔트로피를 제공하는 난수 생성기입니다. C 라이브러리에서 또는 별도의 구현으로 대체 난수 생성기를 찾을 수 있습니다.
-
난수 범위 수정: 편집에서 언급한 대로 rand()의 범위를 13으로 변경합니다. 또는 15를 사용하면 올바르게 작동할 수 있습니다. 이는 15(예: 752574)와 13(예: 220379)의 승수가 해당 나머지로 나누어지지 않기 때문입니다. 그러나 범위를 변경하는 것은 특정 사용 사례에 적합하지 않을 수 있으며, 특히 0에서 13 사이의 난수가 필요한 경우에는 더욱 그렇습니다.
Apple 플랫폼의 난수 생성기와 관련된 근본적인 문제를 해결함으로써, rand() % 14가 0과 13 사이에서 보다 균일하게 분포된 값 시퀀스를 생성하도록 보장할 수 있습니다.
위 내용은 왜 `rand() % 14`는 Apple 플랫폼에서 6과 13만 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!