Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 抽样分布_Node.js_Math_Probability - Fatal编程技术网

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]你能提供直觉或提供一些参考,为什么这是正确的方法?