在Python中模拟多个给定概率的最快方法?
我有一个概率列表在Python中模拟多个给定概率的最快方法?,python,numpy,Python,Numpy,我有一个概率列表p=[p1,p2,…,pn] 我所要做的就是模拟一个列表s=[0,1,0,0,1,…,1],它的第一个元素是0,概率为p1,1概率为1-p1,然后对下一个元素进行模拟,始终匹配p-列表中的相应概率 目前,我的解决方案是将for loop覆盖p,然后将s中对每个pn调用的np.random.choice()的输出附加到s s = [] for item in p: s.append(np.random.choice([0, 1], p=[item, 1 - item]))
p=[p1,p2,…,pn]
我所要做的就是模拟一个列表s=[0,1,0,0,1,…,1]
,它的第一个元素是0
,概率为p1
,1概率为1-p1
,然后对下一个元素进行模拟,始终匹配p
-列表中的相应概率
目前,我的解决方案是将for loop
覆盖p
,然后将s
中对每个pn
调用的np.random.choice()
的输出附加到s
s = []
for item in p:
s.append(np.random.choice([0, 1], p=[item, 1 - item]))
你只需要画出你的数字,并在元素方面与你的p进行比较。 只需决定是要为
1
选择
还是=
import numpy as np
p = np.array([0.2, 0.5, 0, 1.0, 0.9, 0.3, 0.1, 0.8])
x = np.random.random(size=p.shape)
ans = (x>p).astype('int')
print(p)
print(x)
print(ans)
[0.2 0.5 0. 1. 0.9 0.3 0.1 0.8]
[0.08990063 0.51804083 0.9049705 0.0885368 0.1273564 0.18583925
0.51488052 0.23258143]
[0 1 1 0 0 0 1 0]
能否将当前解决方案添加为代码,而不是解决方案的描述?最好作为一个整体。@MichaelSzczesny DoneAh是的,使用均匀分布。非常感谢。