bernoulli_real(p, n, x):根据公式计算并返回 n 重伯努利试验成功概率的理论值,其中,p为单次试验的成功概率,n为试验总次数,x为成功试验的总次数(x<=n); bernoulli_simu(p, n, x, N):用蒙特卡罗方法计算 n 重伯努利试验成功概率的模拟值,其中,p为单次试验的成功概率(0<=p<=1),n为试验总次数,x为成功试验的总次数(x<=n),N为蒙特卡罗方法模拟次数。在每次蒙特卡罗模拟过程中,如果具有概率p的那个结果刚好出现x次,那么称这n次实验是成功的,如果M是N次蒙特卡罗模拟中成功的次数,那么概率估计为M/N.import random from math import factorial def bernoulli_real(p, n, x): ######### Begin ######### return factorial(n)p**x(1-p)**(n-x)/(factorial(x)*factorial(n-x)) ########## End ########## def bernoulli_simu(p, n, x, N): ######### Begin ######### ########## End ########## def test_bernoulli_exp(p, n, x, N): real = bernoulli_real(p, n, x) simu = bernoulli_simu(p, n, x, N) print("理论值:%g\t实验结果:%g\t误差:%g" % (real, simu, abs(simu - real))) if name == 'main': random.seed(10) N = 1000000 test_bernoulli_exp(0.5, 5, 2, N) test_bernoulli_exp(0.3, 10, 3, N) test_bernoulli_exp(0.7, 7, 4, N)
时间: 2024-02-24 16:58:05 浏览: 70
13 python 随机数random库的使用 蒙特卡罗方法计算π
在右侧编辑器的 Begin-End 区间,实现 bernoulli_simu(p, n, x, N) 函数的代码如下:
```
import random
def bernoulli_simu(p, n, x, N):
count = 0
for i in range(N):
successes = 0
for j in range(n):
if random.random() < p:
successes += 1
if successes == x:
count += 1
return count / N
```
其中,`bernoulli_simu(p, n, x, N)` 函数用蒙特卡罗方法计算 n 重伯努利试验成功概率的模拟值,其中,p 为单次试验的成功概率,n 为试验总次数,x 为成功试验的总次数,N 为蒙特卡罗方法模拟次数;在每次蒙特卡罗模拟过程中,如果具有概率 p 的那个结果刚好出现 x 次,那么称这 n 次实验是成功的,如果 M 是 N 次蒙特卡罗模拟中成功的次数,那么概率估计为 M/N。函数返回模拟计算的概率估计值。
阅读全文