假设我有一些分布由如下的概率定义[0.1, 0.6, 0.2, 0.1]
。概率之和等于1.我想知道如何抽样这个分布,这样抽样将遵循分布。抽样分布
Q
抽样分布
0
A
回答
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
这个问题已经被在这里找到答案(所提出的解决方案是因为他们提出了一个功能更普遍可以接受一系列概率): distributional sampling in Node.js
1
这取决于您的分布是离散的还是连续的。对于连续情况,您必须在两个值之间进行线性插值。这里是伪
- 让
u
是0
和1
- 之间的随机数让
i
这样p[i] <= u <= p[i+1]
- 返回
(x[i+1] - x[i])/(p[i+1] - p[i]) * (u - p[i]) + x[i]
请注意,在2有可能是没有这样的i
因为原因有两个:(a)u < p[1]
或(b)p[n] < u
(我假设基于1
的阵列)。如果(a)在(b)x[n]
的情况下返回x[1]
。
相关问题
- 1. 抽样分布和表格总和
- 2. 分层抽样
- 3. 通过从现有分布的分布抽样来推断缺失值
- 4. 使用Javascript - 分层抽样
- 5. 分层抽样或R中
- 6. 回归分层抽样
- 7. 分层抽样的python scikitlearn
- 8. stan/R中的均匀分布导致抽样误差
- 9. 如何从给定的Copula的Kendalls分布函数中抽样?
- 10. 使用emcee抽样概率分布函数?
- 11. 从一列数据集中抽样分布
- 12. 从C++中的离散概率分布中抽样
- 13. 分层抽样中的错误
- 14. 抽样方法
- 15. Matlab:从分布采样
- 16. 半高斯分布样本
- 17. 从TensorFlow中的给定非均匀分布中抽样无取代
- 18. 从R中的pareto分布中抽样 - 获取的值低于参数
- 19. 采样同时控制的比例[分层抽样]
- 20. SQL数据抽样
- 21. 如何实现像抽屉这样的窗口的弹出和抽出部分?
- 22. 负抽样和二次采样
- 23. MATLAB:随机抽样多次?
- 24. Erlang中的Callstack抽样
- 25. 抽屉显示样式
- 26. 从应急表中抽样
- 27. 随机抽样Github仓库
- 28. 随机通用抽样
- 29. 流星随机抽样
- 30. 随机抽样完成行
你可以提供直觉或给出一些参考为什么这是正确的方式吗? – com