2

我有一组 S={a1,a2,a3,a4,a5,......,an}。选择每个元素的概率分别为 {p1,p2,p3,p4,p5,...,pn}(当然 p1+p2+p3+p4+p5+....+pn=1} .

我想模拟一个可以做到这一点的实验。但是我希望在没有任何库的情况下做到这一点(即从第一原则)

我正在使用以下方法:1)我将实数线上的元素映射如下X(a1)= 1;X(a2)=2;X(a3)=3;X(a4)=4;X(a5)=5;....,X(an)=n

2)然后我计算每个坐标的累积概率分布函数(即 P(x < X) 如下:cdf(x)= P(a1) + P(a2) + .....P(ai) 使得X(ai) <= x < X(a(i+1))

(因此 cdf 是一个阶跃函数)

3)我随机选择一个实数,q在(0,1)之间。并计算线 y = q 与 cdf 相交的 x 坐标。由于 cdf 是一个在 1,2,...n 处跳跃的阶跃函数,因此该点将具有一个整数 x 坐标 btw 1 和 n。设 x 坐标为 m。

4) 我选择那个 ai,使得 X(ai) = m。

我的问题是这种方法是否在没有任何偏差的情况下模拟实验?

我没有得到所需的结果,这就是为什么我有点怀疑。

任何帮助将不胜感激!谢谢!

4

1 回答 1

3

逻辑听起来不错。一般要从均匀分布U(0,1)中采样任意分布函数Y(x),只需在Y向量中查找均匀随机值u,返回Y(x)大于等于的x的最小值你即min{x:Y(x)>=u}

您可能希望为基本概率添加 x=0 观察值,如下例所示。

x      P(x)    Y(x)
0      0       0
1      0.1     0.1
2      0.3     0.4
3      0.4     0.8
4      0.2     1

例如u = 0.3 -> x = 2,u = 0.81 -> x = 4等。

清楚地计算许多试验的相对频率将给出 P(x) 的无偏估计。

于 2012-05-30T08:51:53.807 回答