初始提交:Polya 罐蒙特卡洛模拟(概率论,大二下)
概率论(大二下)课程作业:Polya 罐模型抽取概率恒定性的理论证明与蒙特卡洛数值验证。
Polya 罐模型:罐中初始有 a 个白球、b 个黑球,每次随机抽取一球观察颜色后放回, 并再加入 c 个与所抽球同色的球。作业要求证明:对任意 k ≥ 1,第 k 次抽取到白球的 概率恒为初始比例 a/(a+b),与 k 和 c 无关。
理论部分用数学归纳法:按第一次抽白(A₁)与抽黑(A₁’)划分样本空间,结合归纳假设与 全概率公式可得 P(Ak) = (a+c)/(a+b+c) · a/(a+b) + a/(a+b+c) · b/(a+b) = a/(a+b)。
数值部分用蒙特卡洛模拟验证:初始白 4 黑 3(理论概率 4/7 ≈ 57.14%),每次加 2 个 同色球,独立重复大量试验(最多 1e8 次),统计每一步抽到白球的频率及其标准差。 结论:无论罐中球数如何增长,各次抽取的白球频率始终稳定在初始比例附近, 与理论推导一致。
代码先后经历三个版本迭代:基础版只统计频率;第二版增加平方和统计以计算标准差, 并把抽球次数缩到 20 以便跑 1e8 次大样本;第三版恢复 1000 步抽取并在相对路径输出图。
Polya_Sim.py
Polya_Sim2.py
Polya_Sim3 - online.py
README.md
注:实验报告 docx、理论推导手写图与模拟结果 png 未入库,模型与结论已在上方概述。
依赖:Python 3,第三方库仅 matplotlib、tqdm(标准库 random 无需安装)。
matplotlib
tqdm
random
pip install matplotlib tqdm python Polya_Sim.py python Polya_Sim2.py python "Polya_Sim3 - online.py"
注意事项:
plt.savefig
D:\Desktop\...
num_simulations
font.sans-serif
概率论作业:Polya 罐模型蒙特卡洛模拟,三个迭代版本与推导
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Polya 罐蒙特卡洛模拟
任务背景
Polya 罐模型:罐中初始有 a 个白球、b 个黑球,每次随机抽取一球观察颜色后放回, 并再加入 c 个与所抽球同色的球。作业要求证明:对任意 k ≥ 1,第 k 次抽取到白球的 概率恒为初始比例 a/(a+b),与 k 和 c 无关。
理论部分用数学归纳法:按第一次抽白(A₁)与抽黑(A₁’)划分样本空间,结合归纳假设与 全概率公式可得 P(Ak) = (a+c)/(a+b+c) · a/(a+b) + a/(a+b+c) · b/(a+b) = a/(a+b)。
数值部分用蒙特卡洛模拟验证:初始白 4 黑 3(理论概率 4/7 ≈ 57.14%),每次加 2 个 同色球,独立重复大量试验(最多 1e8 次),统计每一步抽到白球的频率及其标准差。 结论:无论罐中球数如何增长,各次抽取的白球频率始终稳定在初始比例附近, 与理论推导一致。
代码先后经历三个版本迭代:基础版只统计频率;第二版增加平方和统计以计算标准差, 并把抽球次数缩到 20 以便跑 1e8 次大样本;第三版恢复 1000 步抽取并在相对路径输出图。
内容结构
Polya_Sim.pyPolya_Sim2.pyPolya_Sim3 - online.pyREADME.md注:实验报告 docx、理论推导手写图与模拟结果 png 未入库,模型与结论已在上方概述。
运行方法
依赖:Python 3,第三方库仅
matplotlib、tqdm(标准库random无需安装)。注意事项:
Polya_Sim.py与Polya_Sim2.py中plt.savefig写死了D:\Desktop\...绝对路径, 在其他机器运行前请先改成自己的输出路径;Polya_Sim3 - online.py输出到当前目录。num_simulations调小试跑。font.sans-serif设置。来源声明