我有一套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(一)= N
2)然后我计算每个坐标的累积概率分布函数(即P(x (因此cdf是阶梯函数) 3)我随机选择一个实数,q在(0,1)之间。并计算线y = q与cdf相交的x坐标。由于cdf是阶跃函数,跳跃在1,2,... n,该点将具有整数x坐标btw 1和n。设x坐标为m。 4)我选择ai,使得X(ai)= m。 我的问题是这种方法是否在没有任何偏见的情况下模拟实验? 我没有得到所需的结果,这就是为什么我有点怀疑。 任何帮助将不胜感激!谢谢!
答案 0 :(得分:3)
逻辑听起来不错。通常从均匀分布U(0,1)中采样任意分布函数Y(x),只需在Y向量中查找均匀随机值u并返回x的最小值,其中Y(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)的无偏估计。