根据提示,在右侧编辑器 Begin-End 区间补充代码,实现普通版本和向量化版本的一维随机游走模拟,计算模拟结果的粒子位置的平均值和标准差。 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。
时间: 2024-02-13 21:03:11 浏览: 81
python-turtle实现模拟按钮可仿照示例代码进行更改-原创
下面是实现bernoulli_real和bernoulli_simu函数的代码:
```python
import math
import random
def bernoulli_real(p, n, x):
q = 1 - p
coef = math.factorial(n) / (math.factorial(x) * math.factorial(n - x))
prob = coef * (p ** x) * (q ** (n - x))
return prob
def bernoulli_simu(p, n, x, N):
count = 0
for i in range(N):
successes = sum(random.choices([1, 0], weights=[p, 1-p], k=n))
if successes == x:
count += 1
prob = count / N
return prob
```
其中,bernoulli_real函数根据公式计算 n 重伯努利试验成功概率的理论值,参数p为单次试验的成功概率,n为试验总次数,x为成功试验的总次数。bernoulli_simu函数用蒙特卡罗方法计算 n 重伯努利试验成功概率的模拟值,参数p为单次试验的成功概率,n为试验总次数,x为成功试验的总次数,N为蒙特卡罗方法模拟次数。在每次蒙特卡罗模拟过程中,通过random.choices函数生成n个服从二项分布的随机数,其中权重为p和1-p,如果成功的次数等于x,则计数器加1。最后,概率估计为计数器除以模拟次数N。
阅读全文