유명한 강연 "rand()는 유해한 것으로 간주됩니다"에서 엔진 배포를 사용하여 난수 생성을 위한 패러다임은 고전적인 std::rand()와 모듈러스 단순화를 통해 옹호됩니다.
제시된 주장을 테스트하기 위해 std::rand()와 std::mt19937 및 std::를 비교하는 실험이 있습니다. uniform_int_distribution이 수행되었습니다.
놀랍게도 롤의 총 확산은 두 방법 모두 동일했으며 이는 std::mt19937과 std::uniform_int_distribution이 추가 균일성을 제공하지 않았음을 나타냅니다. 그러나 새로운 방법은 대략 4배 더 느렸습니다.
이 실험에서는 std::rand()가 반드시 열등한 것은 아닌 것으로 나타났지만 std::rand()의 고유한 한계를 고려하는 것이 중요합니다.
반면, 새로운
성능 측면에서 std::minstd_rand가 std를 대체하는 데 적합할 수 있음을 권장합니다. ::mt19937 LCG 품질이 충분할 때 잠재적으로 더 나은 속도를 제공합니다(특히uniform_int_distribution을 사용하여 분포 조정을 피할 때).
궁극적으로 난수 생성기의 선택은 애플리케이션의 특정 요구 사항에 따라 다르지만 새로운 <랜덤> 라이브러리는 특히 고품질 난수를 요구하는 애플리케이션의 경우 레거시 std::rand() 구현에 비해 여러 가지 이점을 제공합니다.
위 내용은 새로운 무작위 라이브러리가 정말로 `std::rand()`보다 나은가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!