>백엔드 개발 >C++ >왜 `rand() % 14`는 Apple 플랫폼에서 6과 13만 생성합니까?

왜 `rand() % 14`는 Apple 플랫폼에서 6과 13만 생성합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-26 04:53:13717검색

Why Does `rand() % 14` Only Generate 6 and 13 on Apple Platforms?

Rand() % 14 값 6 또는 13만 생성: 미스터리 깨기

당면한 문제는 고유한 귀하가 제공한 답변에 설명된 대로 Apple 플랫폼에서 rand() 함수 구현 시 제한 사항이 있습니다. 기본 매개변수를 사용하면 rand()에서 사용하는 난수 생성기는 14로 나눌 때 엔트로피가 제한된 시퀀스를 생성하여 6과 13의 두 값 사이에서만 순환하게 됩니다.

이 문제를 해결하려면, 다음 단계를 수행할 수 있습니다.

  1. Srand() 후에 Rand()를 여러 번 호출: 답변에서 제안한 대로 srand(time(NULL))을 호출한 후 rand()에서 생성된 처음 몇 개의 결과를 삭제하십시오. 이렇게 하면 6과 13만 생성하는 초기 주기가 제거됩니다.
  2. 다른 난수 생성기 사용: 위 방법으로 문제가 해결되지 않으면 다른 난수 생성기로 전환하는 것이 좋습니다. Mersenne Twister와 같이 더 나은 엔트로피를 제공하는 난수 생성기입니다. C 라이브러리에서 또는 별도의 구현으로 대체 난수 생성기를 찾을 수 있습니다.
  3. 난수 범위 수정: 편집에서 언급한 대로 rand()의 범위를 13으로 변경합니다. 또는 15를 사용하면 올바르게 작동할 수 있습니다. 이는 15(예: 752574)와 13(예: 220379)의 승수가 해당 나머지로 나누어지지 않기 때문입니다. 그러나 범위를 변경하는 것은 특정 사용 사례에 적합하지 않을 수 있으며, 특히 0에서 13 사이의 난수가 필요한 경우에는 더욱 그렇습니다.

Apple 플랫폼의 난수 생성기와 관련된 근본적인 문제를 해결함으로써, rand() % 14가 0과 13 사이에서 보다 균일하게 분포된 값 시퀀스를 생성하도록 보장할 수 있습니다.

위 내용은 왜 `rand() % 14`는 Apple 플랫폼에서 6과 13만 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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