【发布时间】:2021-06-21 09:02:13
【问题描述】:
我有一个累积转移矩阵,需要构建一个简单的随机游走算法来尽可能高效地从矩阵中生成 500 个值(实际矩阵为 1000 x 1000)
cum_sum
[array([0.3, 0.5, 0.7, 0.9, 1. ]),
array([0.5 , 0.5 , 0.5 , 0.75, 1. ]),
array([0.66666667, 1. , 1. , 1. , 1. ]),
array([0.4, 0.6, 0.8, 1. , 1. ]),
array([0.5, 0.5, 0.5, 1. , 1. ])]
-
随机选择矩阵中的初始状态i
-
产生一个介于 0 和 1 之间的随机值
-
随机数的值与累积矩阵的第i行的元素进行比较。如果随机数值大于前一状态的累积概率但小于或等于后一状态的累积概率,则采用后一状态。
我尝试过的东西
def random_walk(cum_sum):
start_point=random.choice([item[0] for item in cum_sum])
random=np.random.uniform(0,1,1)
if random > start_point:
【问题讨论】:
-
发生了什么?看来你“不接受”这个答案?有什么特别的原因吗?
标签: python markov-chains