Python中独立概率的有效随机0,1生成

Python中独立概率的有效随机0,1生成,python,numpy,probability,Python,Numpy,Probability,我有大量相互独立的概率。除了在循环中每次调用numpy random之外,是否有一种有效的方法可以基于这些概率中的每一个生成0或1?我每次只需要一次试验的结果,但对于每种可能性 # current method using np.random.binomial() n = 1 p = np.random.random(1000) #generating 1000 probabilities results = np.zeros(1000) for ix, i in enumerate(p):

我有大量相互独立的概率。除了在循环中每次调用numpy random之外,是否有一种有效的方法可以基于这些概率中的每一个生成0或1?我每次只需要一次试验的结果,但对于每种可能性

# current method using np.random.binomial()
n = 1
p = np.random.random(1000) #generating 1000 probabilities

results = np.zeros(1000)
for ix, i in enumerate(p):
    results[ix] = np.random.binomial(n,i,1)
是否有一种更快的方法或函数可以采用一组独立的概率(因此不是随机选择,因为概率不会增加到1)

您可以尝试以下方法:

np.where(p > np.random.rand(1000), 1, 0) 

p
参数to允许是类似列表的,如果是那样,它表示每个样本的
p
值。此外,当使用这样的列表时,您甚至不需要提供您期望的总样本数:您只需为
p
中的每个值获取一个样本

results = np.random.binomial(n, p)
还有一些样本可以证明这一点:

In [1]: np.random.binomial(1, 0.5)
Out[1]: 1

In [2]: np.random.binomial(1, [0.5, 0.5, 0.9])
Out[2]: array([0, 0, 1])

“大概率数组”还是大样本数组?请包含数组的一小部分。肯定是一个大的概率数组,在本例中,我随机生成了它们,但我将从数据中获得一组概率(值介于0到1之间),我将使用这些概率来获取样本。