【发布时间】:2017-04-11 03:53:11
【问题描述】:
我正在寻找以下问题的高性能 Python 解决方案:
掷硬币 n 次,使正面 (=1) 的概率为 等于给定的概率 p。 n 以百万计。
朴素的 Python 实现是显而易见的,但我怀疑可以有一个非常有效的基于 numpy 的解决方案。
【问题讨论】:
-
您对发行版有什么偏好吗?统一、二项式等?
标签: python performance numpy random
我正在寻找以下问题的高性能 Python 解决方案:
掷硬币 n 次,使正面 (=1) 的概率为 等于给定的概率 p。 n 以百万计。
朴素的 Python 实现是显而易见的,但我怀疑可以有一个非常有效的基于 numpy 的解决方案。
【问题讨论】:
标签: python performance numpy random
您正在寻找 NumPy 内置的 np.random.choice -
np.random.choice([1,0],n,p=[p,1-p])
让我们验证一下 -
In [120]: p = 0.8
In [121]: n = 100000
In [122]: (np.random.choice([1,0],n,p=[p,1-p])==1).mean()
Out[122]: 0.80003999999999997
看起来也很高效 -
In [123]: %timeit np.random.choice([1,0],n,p=[p,1-p])
100 loops, best of 3: 4 ms per loop
【讨论】: