python - Python中独立概率的高效随机0,1代
问题描述
我有大量相互独立的概率。除了在循环中每次调用 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)。
解决方案
p
允许参数 tonp.random.binomial
是列表式的,当它是这样时,它表示每个样本的值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])
推荐阅读
- javascript - 在 Angular 中,我可以使用 @Input 作为事件发射器吗
- model - Anylogic:如何根据代理的参数在 ResourcePool 中对设置时间(工具更换)进行建模?
- node.js - 有一个消费者监听多个队列,但它应该在队列 B 之前消费队列 A 中的所有消息
- python-3.x - Python 无法识别项目结构中的 ROS msg 文件
- python - 在python中比较dict的所有值(集)的最有效方法是什么?
- javascript - 如何使用 useEffect() 进行验证
- c# - 在 C# 中调用 Web 服务
- python-3.x - 自定义搜索命令 Discord.py
- php - Symfony 4 安全重定向取决于用户类型
- r - 按组应用测试