用向量的方式实现一维随机游走程序,使得向右移动的概率为 r,向左移动的概率为 1-r(生成中的数字,而不是{1,2}中的整数)。在 n s 步后计算 n p 个粒子的平均位置
时间: 2023-11-22 11:53:11 浏览: 37
以下是一维随机游走程序的 Python 代码实现:
```python
import numpy as np
def one_dimensional_random_walk(r, n, s, p):
"""
:param r: 向右移动的概率
:param n: 步数
:param s: 随机数种子
:param p: 粒子数
:return: n个步数后p个粒子的平均位置
"""
np.random.seed(s)
positions = np.zeros(p)
for i in range(n):
moves = np.random.choice([-1, 1], size=p, replace=True, p=[1-r, r])
positions += moves
return np.mean(positions)
# 示例
print(one_dimensional_random_walk(0.6, 100, 0, 1000))
```
其中,`np.random.choice` 函数用于从 `[-1, 1]` 中选择元素,且每个元素被选中的概率分别为 `[1-r, r]`,即向左和向右移动的概率。然后,将这些移动加到粒子的位置上,并计算它们的平均位置。