Node.js 抽样分布
假设我有一些由概率定义的分布,比如下面的Node.js 抽样分布,node.js,math,probability,Node.js,Math,Probability,假设我有一些由概率定义的分布,比如下面的[0.1,0.6,0.2,0.1]。概率之和等于1。我想知道如何对该分布进行采样,以便采样将遵循该分布。假设Node.JS的PRNG遵循均匀分布,一个简单的解决方案可能是: var v = Math.random(); // return a number between 0 and 1 if(v < 0.1) // first value else if(v < 0.7) // (0.1 + 0.6) // second v
[0.1,0.6,0.2,0.1]
。概率之和等于1。我想知道如何对该分布进行采样,以便采样将遵循该分布。假设Node.JS的PRNG遵循均匀分布,一个简单的解决方案可能是:
var v = Math.random(); // return a number between 0 and 1
if(v < 0.1)
// first value
else if(v < 0.7) // (0.1 + 0.6)
// second value
else if(v < 0.9) // (0.1 + 0.6 + 0.2)
// third value
else
// forth value
var v=Math.random();//返回一个介于0和1之间的数字
如果(v<0.1)
//第一值
否则如果(v<0.7)/(0.1+0.6)
//第二值
否则如果(v<0.9)/(0.1+0.6+0.2)
//第三值
其他的
//第四值
这个问题已经在这里得到了回答(建议的解决方案更为一般,因为他们提出了一个可以接受一系列概率的函数):
这取决于您的分布是离散的还是连续的。对于连续情况,必须在两个值之间进行线性插值。这是伪代码
u
为0
和1
之间的随机数i
这样p[i]你能提供直觉或提供一些参考,为什么这是正确的方法?