首页 > 解决方案 > 从分布中生成样本

问题描述

我正在学习统计学,假设我有一些实验的结果:

1 | 0.34
2 | 0.10
3 | 0.05
4 | 0.13
5 | 0.13
6 | 0.25

我有兴趣使用此分布中的统一随机数生成器生成样本。有什么建议么?

标签: statistics

解决方案


这是一个非常标准的问题,具有非常标准的解决方案。形成一个数组,其中每个条目不包含该索引的概率,而是该索引之前所有概率的总和。对于您的示例问题,数组是 p[1] = 0.34、p[2] = 0.44、p[3] = 0.49 等。使用统一的 RNG 生成介于 0 和 1 之间的 u。然后找到索引 i 使得p[i-1] < u < p[i]。对于这样一个非常小的数组,您可以使用线性搜索,但对于一个大数组,您将需要使用二分搜索。请注意,您可以重复使用数组来生成多个偏差,因此不要每次都重新构造它。


推荐阅读