【问题标题】:How to select a number from an array with given probability distribution如何从具有给定概率分布的数组中选择一个数字
【发布时间】:2019-01-10 15:03:04
【问题描述】:

我想从给定概率的列表中选择一个数字。

我使用 numpy 并定义了一个可供选择的列表。我也有一个与我的列表条目匹配的概率分布。

from numpy import random

a = [0, 1]     # select one entry from this list
p = [0.0, 1.0] # probability distribution
print(random.choice(a, 1, p))

使用分布p 我应该只收到 1。但是,当我运行我的代码时,我经常收到 0。我认为我的分布并不会真正影响选择。

【问题讨论】:

    标签: python-3.x numpy random


    【解决方案1】:

    来自numpy.random.choice的文档:

    选择(a, size=None, replace=True, p=None)

    当您调用choice(a, 1, p) 时,第三个位置参数p 用于replace 参数1,而不是您想要的p 参数。

    您需要为replace 插入另一个位置参数,以便p 成为第四个位置参数:

    choice(a, 1, True, p)
    

    或显式传递 p 作为关键字参数:

    choice(a, 1, p=p)
    

    1 这是可行的,因为列表也可以在布尔上下文中进行评估。在这种情况下,[0.0, 1.0] 作为一个非空列表,将被评估为True

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多