初级
第19章 马尔可夫链蒙特卡洛法 - M-H采样python实现 - 实现norm_dist_prob函数
未完成
初级参考
完整示例代码供参考,建议自己理解后重新输入
import numpy as np
import random
def norm_dist_prob(theta):
return np.exp(-theta**2 / 2) / np.sqrt(2 * np.pi)
def mh_sampling(n_samples=10000, sigma=1.0):
samples = []
theta = 0.0
for _ in range(n_samples):
theta_new = theta + np.random.normal(0, sigma)
alpha = min(1, norm_dist_prob(theta_new) / norm_dist_prob(theta))
if random.random() < alpha:
theta = theta_new
samples.append(theta)
return samples
samples = mh_sampling(1000)
print("采样完成,均值:", np.mean(samples))
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199