在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是的,使用均匀分布。非常感谢。