가중 난수 생성
가중 난수 생성에는 각 숫자의 확률이 다음과 같이 결정되는 범위에서 난수를 선택하는 과정이 포함됩니다. 무게. 이 작업은 시뮬레이션, 게임 등 다양한 애플리케이션에서 발생합니다.
초기 솔루션
일반적인 접근 방식은 거부 샘플링입니다. ColdFusion 코드를 제공했습니다. 이 방법에는 가중치에 따라 분포된 요소가 포함된 조회 테이블을 만드는 작업이 포함됩니다. 그러나 이 접근 방식에는 테이블 작성 시 선형 오버헤드 및 잠재적인 메모리 소비 문제 등의 제한 사항이 있습니다.
대체 전략
구현
가중 무작위 구현 별칭 샘플링을 사용하여 JavaScript에서 숫자 생성:
function weightedRand(weights) { // Build the alias table let table = []; let totalWeight = 0; for (let i = 0; i < weights.length; i++) { totalWeight += weights[i]; } for (let i = 0; i < weights.length; i++) { let prob = weights[i] / totalWeight; let alias = i; table.push({ prob: prob, alias: alias }); } // Generate a random number return function() { let r = Math.random() * totalWeight; let i = 0; let alias = -1; while (i < table.length && alias === -1) { if (r < table[i].prob) { alias = i; } else { r -= table[i].prob; i = table[i].alias; } } return alias; } }
위 내용은 효율성을 위해 가중치 난수 생성을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!