mercredi 4 février 2015

Javascript function to generate random integers with nonuniform probabilities

In javascript (or jquery) is there a simple function to have four integers with their probability values: 1|0.41, 2|0.29, 3|0.25, 4|0.05


how can I generate these four numbers taking into account their probabilities ?


This question is very similar to the one posted here: generate random integers with probabilities


HOWEVER the solution posted there:



function randomWithProbability() {
var notRandomNumbers = [1, 1, 1, 1, 2, 2, 2, 3, 3, 4];
var idx = Math.floor(Math.random() * notRandomNumbers.length);
return notRandomNumbers[idx];
}


states in the comment "create notRandomNumbers dynamically (given the numbers and their weight/probability)"


This is insufficient for my needs. That works well when the probabilities are say 10%,20%, 60%,10%.


In that case constructing notRandomNumbers with the required distribution is easy and the array size is small. But in the general case where probabilities can be something like 20.354%,30.254% etc , the array size would be huge to correctly model the situation.


Is there a clean solution to this more general problem?





Aucun commentaire:

Enregistrer un commentaire