가중 난수 생성
특정 확률을 갖는 난수를 선택하는 것은 프로그래밍에서 일반적인 작업입니다. Boost의 난수 생성기는 가중치가 적용된 확률로 항목을 선택하는 편리한 방법을 제공합니다.
다음 가중치를 사용하여 1에서 3 사이의 난수를 선택하려는 시나리오를 생각해 보세요.
알고리즘
Boost에는 가중치 난수 생성 기능이 내장되어 있지 않습니다. 그러나 적용할 수 있는 간단한 알고리즘이 있습니다.
코드 예
Boost에서 random_device 및 mt19937 난수 생성기 사용:
std::mt19937 rng(std::random_device{}()); int total_weight = 90 + 56 + 4; for (int i = 0; i < total_weight; i++) { int random_number = rng() % total_weight; int current_weight = 90; if (random_number < current_weight) { return 1; } current_weight += 56; if (random_number < current_weight) { return 2; } return 3; // Reached the end of the weights }
최적화
가중치가 거의 변하지 않는 경우 랜덤 픽이 빈번한 경우, 각 항목에 누적 가중치 합을 저장하여 최적화를 적용할 수 있습니다. 이를 통해 보다 효율적인 이진 검색 접근 방식이 가능해집니다.
또한 항목 수는 알 수 없지만 가중치는 알고 있는 경우 저장소 샘플링을 가중 난수 생성에 맞게 조정할 수 있습니다.
위 내용은 가중치 난수 선택에 Boost의 난수 생성기를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!