2014-04-04 34 views
0

我想知道如何在Node.js中执行分布式采样。Node.js中的分布式采样

特别是,我有个元素,其中所述阵列的第i个值是第i个元素的概率的数量,如以下

[0.2 0.3 0.5] 

现在我需要进行采样,并在样品的一半的采样的结果应该是2的样品的0.2为0,并在样品的0.3是1

回答

1

琐碎方法:

function distribute(probs) { 
    return function() { 
     var r = Math.random(); 
     var i = 0, 
      acc = 0; 
     while ((acc += probs[i]) <= r) 
      i++; 
     return i; 
    }; 
} 
var sample = distribute([0.2, 0.3, 0.5]); 
sample(); 
sample(); 
sample(); 
…