代码模拟马尔可夫随机游走
时间: 2024-07-16 10:00:57 浏览: 83
马尔可夫随机游走是一种基于状态转移的概率过程,在Python中可以通过构建适当的概率矩阵来实现。这里我们可以使用`numpy`库来进行模拟[^1]。
首先,定义一个状态转移矩阵,它表示从当前状态到下一个状态的概率分布。假设我们有一个简单的二维网格,每个单元格有自己的移动概率:
```python
import numpy as np
# 创建一个2x2的转移矩阵,比如向右、向下、保持原地、向上移动的概率
transition_matrix = np.array([[0.3, 0.3, 0.2, 0.2],
[0.4, 0.1, 0.2, 0.3],
[0.1, 0.3, 0.5, 0.1],
[0.2, 0.4, 0.2, 0.2]])
```
然后,我们可以编写一个函数来执行马尔可夫链的随机步进:
```python
def random_step(current_state, transition_matrix):
possible_transitions = range(len(transition_matrix[current_state]))
return np.random.choice(possible_transitions, p=transition_matrix[current_state])
def simulate_markov_random_walk(initial_state, steps, transition_matrix):
current_position = initial_state
walk = [current_position]
for _ in range(steps):
next_state = random_step(current_position, transition_matrix)
current_position = next_state
walk.append(current_position)
return walk
```
最后,你可以调用这个函数来模拟多次随机游走并记录结果:
```python
num_walks = 10
num_steps = 100
initial_state = 0
walks = [simulate_markov_random_walk(initial_state, num_steps, transition_matrix) for _ in range(num_walks)]
# 对这些路径进行统计分析...
```
阅读全文