【问题标题】:Efficiently generating a large array of biased coin flips有效地生成大量有偏差的硬币翻转
【发布时间】:2017-04-11 03:53:11
【问题描述】:

我正在寻找以下问题的高性能 Python 解决方案:

掷硬币 n 次,使正面 (=1) 的概率为 等于给定的概率 p。 n 以百万计。

朴素的 Python 实现是显而易见的,但我怀疑可以有一个非常有效的基于 numpy 的解决方案。

【问题讨论】:

标签: python performance numpy random


【解决方案1】:

您正在寻找 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

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多