我的目标是使用
networkx
和 numpy
模拟马尔可夫链。我写了下面的代码
import numpy as np
import networkx as nx
states = [
'distance',
'strike',
'knockout'
]
transition_matrix = np.array([
[0.85, 0.15, 0],
[0.98, 0, 0.02],
[0, 0, 1]
])
def create_graph(T: np.ndarray) -> nx.DiGraph:
G = nx.DiGraph()
G.add_nodes_from(states)
for i, u in enumerate(states):
for j, v in enumerate(states):
p = T[i][j]
if p > 0:
G.add_edge(u, v, p=p)
return G
G = create_graph(T=transition_matrix)
基本上,有两个战士站在对方面前。它们以
0.85
的概率四处移动,并以 0.15
的概率互相攻击。罢工导致击倒的概率是 0.02
。淘汰赛是一种引人入胜的状态,并结束战斗。
模拟战斗并跟踪状态的最佳/最快方法是什么?所以理想情况下,我希望我的输出如下所示:
['距离', '距离', '距离', '距离', '打击', '距离', ...、‘距离’、‘打击’、‘淘汰’]
我不可以发表评论,所以我需要写在这里。
他们轮流战斗,还是你想要“平行”战斗?