首页 > 其他分享 >利用中心极限定理求解圣彼得堡悖论问题的近似曲线

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

时间:2023-10-23 15:31:48浏览次数:25  
标签:plt log 求解 pow random import 悖论 圣彼得堡 math

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

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

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

下面作模拟:

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>]


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

利用中心极限定理求解圣彼得堡悖论问题的近似曲线_复杂度_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()


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


不难发现还挺准的。

标签:plt,log,求解,pow,random,import,悖论,圣彼得堡,math
From: https://blog.51cto.com/u_16105286/7987842

相关文章

  • 递归求解N皇后问题
      ......
  • 非递归求解N皇后问题
      ......
  • 青蛙跳台阶(C语言数学排列组合公式求解法)
    题目:从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法。当只有跳一级台阶的方法跳时,总共跳n步,共有1次跳法                 当用了一次跳二级台阶的方法跳时,总共跳n-1步,共有n-1次......
  • 求解离散对数的方法:BSGS
    离散对数问题:在循环群(循环群的定义见密码协议学习笔记(1.4):密码学的一些数学基础-Isakovsky-博客园(cnblogs.com))$(\mathbb{G},\cdot)$上已知两个元素$g,h\in\mathbb{G}$,求式子$g^x=h$中$x$的值的问题,叫做离散对数问题,亦可记为$x=\log_gh$BSGS(BabyStepGiantStep......
  • 递归求解n皇后问题
    ​ 一、问题描述        在n×n的方格棋盘上放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。下图所示为6皇后问题的一个解。二、问题求解    采用整数q[N]来存放每一个皇后所在的列号,即第i个皇后在(i,q[i])位置上,count_1表示n皇后解的个数。在n皇后......
  • 关键路径求解
    例题展示例题解答......
  • 算法之动态规划(DP)求解完全背包问题(状态转移式方程推导)
    完全背包是01背包的进阶版。在这里补充一下代码随想录的完全背包状态转移式的推导。有兴趣的可以先看一看原版。状态转移方程状态:dp[i][j]选择前i个物品,容量为j的背包时所选物品价值总和最大。状态转移:dp[i][j]=max(dp[i-1][j-k*v[i]]+k*w[i])(k=0,1,2,3...)(j-k*v......
  • 线性方程组求解
    下面是运用MATLAB写的一个代码,可用来求解线性方程组。functionx=ch2_gauss(A,b)n1=size(A,1);n2=size(A,2);n3=length(b);if(n1~=n2)  disp("Aisnotasquarenmatrix");  return;endif(n2~=n3)  disp("dimensionofAandbisnotequal");  returnendn=n1;L=z......
  • Cplex混合整数规划求解(Python API)
    绝对的原创!罕见的Cplex-PythonAPI混合整数规划求解教程!这是我盯了一天的程序一条条写注释一条条悟出来的•́‸ก一、问题描述求解有容量限制的的设施位置问题,使用Benders分解。模型如下:\[min\quad\sum^{locations}_{j=1}fixedCost_j//open_j+\sum^{locations}_{j=1}\sum^{cli......
  • CCF第三十一次计算机软件能力认证202309-1坐标变换(其二) (暴力求解法,80分)
    代码如下此算法是暴力求解算法,时间复杂度O(mn),只能得80分,而且代码在模拟系统里一直提交错误(评判系统应该有bug),但在本地可以正常运行*#include<stdio.h>#include<stdlib.h>#include<math.h>typedefstructOperation{/*操作结点*/inttype;doublevalu......