利用中心极限定理求解圣彼得堡悖论问题的近似曲线
  6UTstqKLbwu3 2023年11月02日 28 0

此文为《概率论》课程小项目。

关于圣彼得堡悖论的一些思考

利用中心极限定理求解圣彼得堡悖论问题的近似曲线_复杂度

下面作模拟:

import random
import matplotlib.pyplot as plt

MaxN = 10000000

def getAward():
    award = 1
    while(1):
        award *= 2
        if (random.random() <= 0.5):
            break
    return award

sumAward = 0

x_v = []
y_v = []
for i in range(0, MaxN):
    sumAward += getAward()
    x_v.append(i + 1)
    y_v.append(sumAward / (i + 1))

plt.xlabel("Count of rounds")
plt.ylabel("Average award")
plt.plot(x_v, y_v)
[<matplotlib.lines.Line2D at 0x1f843cec1c0>]


利用中心极限定理求解圣彼得堡悖论问题的近似曲线_复杂度_02

利用中心极限定理求解圣彼得堡悖论问题的近似曲线_3c_03

from scipy.stats import norm

n = 10000000
m = 30
p = pow(0.5, m)
Ey = m/(1-p)
Dy = (pow(2, m + 1) - 2) / (1 - p)

x = norm.ppf(1 - p)

M = x * pow(n * Dy, 0.5) + n * Ey

print("M = ", M)
M =  1180628405.2149527

解出 \(M\) 后,\(E(X/n|X \le M)\)

可以近似认为就是 \(log M\)

import math

print(math.log(M)/math.log(2))
30.136907811683777

考虑对比两条曲线:

y_v_2 = []

for i in range(0, MaxN):
    n = i + 1
    M = x * pow(n * Dy, 0.5) + n * Ey
    y_v_2.append(math.log(M)/math.log(2))

plt.plot(x_v, y_v, label = "real")
plt.plot(x_v, y_v_2, label = "estimate", color = 'red')
plt.legend()
plt.show()


利用中心极限定理求解圣彼得堡悖论问题的近似曲线_复杂度_04


不难发现还挺准的。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
6UTstqKLbwu3