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 而不是。