Skip to main content
 首页 » 编程设计

python之Python中高效随机0,1代独立概率

2025年05月04日14qlqwjy

我有大量彼此独立的概率。除了每次在循环中随机调用 numpy 之外,是否有一种有效的方法可以根据这些概率中的每一个生成 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.random.binomial 的p 参数允许像列表一样,当它是这样时,它表示每个样本的 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])