python 中的马尔可夫链 - 以概率随机选择
Markov chain in python - Random selection with a probability
我正在尝试通过使用具有特定概率的随机数选择在 python 中使用马尔可夫链。我从 youtube 视频中找到了一段代码,但我想我遗漏了一些东西。我想生成随机数字序列(“0”或“1”)
这是代码:
n = 4 #steps
start_state = 0
prev_state = start_state
A =np.array([[0.5, 0.5], [0, 1]])
while n-1:
curr_state= np.random.choice([0, 1], p=A[prev_state])
print(state[curr_state])
prev_state = start_state
n -= 1
print("stop")
矩阵 A 是转移矩阵,据此,如果系统进入状态“1”,则它不能进入状态“0”(矩阵 A 中的概率为零)。
所以我一定不能得到像 s1=[1 0 1] 或 s2=[1 0 0] 这样的序列,而是像这样的序列:s3=[1 1 1]。
我得到的其余序列都很好。
你能帮我吗?可能我遗漏了代码的某些功能。
提前致谢!
首先,我想向你强调,在状态 1 中,你的概率矩阵是 [0,1],任何时候你进入状态 1,你都会被困在那里,因为转换回的概率0 是 0.
其次,问题出在prev_state = start_state
行。它应该是 prev_state = curr_state
而不是。
我正在尝试通过使用具有特定概率的随机数选择在 python 中使用马尔可夫链。我从 youtube 视频中找到了一段代码,但我想我遗漏了一些东西。我想生成随机数字序列(“0”或“1”) 这是代码:
n = 4 #steps
start_state = 0
prev_state = start_state
A =np.array([[0.5, 0.5], [0, 1]])
while n-1:
curr_state= np.random.choice([0, 1], p=A[prev_state])
print(state[curr_state])
prev_state = start_state
n -= 1
print("stop")
矩阵 A 是转移矩阵,据此,如果系统进入状态“1”,则它不能进入状态“0”(矩阵 A 中的概率为零)。
所以我一定不能得到像 s1=[1 0 1] 或 s2=[1 0 0] 这样的序列,而是像这样的序列:s3=[1 1 1]。 我得到的其余序列都很好。
你能帮我吗?可能我遗漏了代码的某些功能。
提前致谢!
首先,我想向你强调,在状态 1 中,你的概率矩阵是 [0,1],任何时候你进入状态 1,你都会被困在那里,因为转换回的概率0 是 0.
其次,问题出在prev_state = start_state
行。它应该是 prev_state = curr_state
而不是。