균등하게 분포된 무작위 정수 생성
많은 프로그래밍 애플리케이션에서 지정된 범위 내에서 무작위 정수를 생성하는 것은 일반적인 요구 사항입니다. 그러나 이러한 정수가 균일하게 분포되도록 하는 것은 어려운 일입니다. 이 기사에서는 균일한 분포를 달성하기 위한 다양한 접근 방식을 살펴봅니다.
기존 코드 및 제한 사항
사용자가 제공한 코드는 rand() 함수를 활용하여 주어진 범위. 그러나 이 접근 방식은 특히 <0, 1>과 같은 작은 범위의 경우 균일성이 부족하다는 문제가 있습니다. 이는 rand()가 최대값인 RAND_MAX를 반환할 확률이 낮기 때문입니다.
제안 공식
이 문제를 해결하기 위해 사용자는 새로운 공식을 고안했습니다.
( (max - min) * rand() + (RAND_MAX / (2 * (max - min))) ) / RAND_MAX
이 공식은 균일성을 향상시키는 것을 목표로 하지만 샘플링에서 알 수 있듯이 여전히 부족합니다. data.
C 표준 라이브러리 솔루션
C 표준 라이브러리는 이 문제에 대한 우아하고 안정적인 솔루션을 제공합니다. std::random 헤더에는 균일 분포로 난수를 생성할 수 있는 난수 생성기 및 분포 세트가 포함되어 있습니다.
#include <random> // Initialize random-number engine with a seed std::random_device rd; std::mt19937 rng(rd()); // Define uniform integer distribution std::uniform_int_distribution<int> uni(min, max); // Generate random integer within range auto random_integer = uni(rng);
이 접근 방식은 잘 테스트되고 최적화된 코드를 활용하여 균일한 분포와 효율성을 보장합니다. 이를 통해 바퀴를 재발명할 필요가 없으며 편견이나 초기 가치에 대한 우려가 사라집니다.
위 내용은 지정된 범위에서 정말로 균일하게 분포된 무작위 정수를 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!