【问题标题】:Prioritizing first items in a list (Random & Probability Distribution)优先考虑列表中的第一项(随机和概率分布)
【发布时间】:2016-03-26 17:55:02
【问题描述】:

我有一个已排序元素的列表。与最后一个元素相比,第一个元素应该被优先考虑。目前,我只是使用random.choice(foo) 从我的列表中选择项目。

如果使用不同的概率分布(如上所述),我正在编写的算法会更有效。不幸的是,我不确定如何实现它

【问题讨论】:

    标签: python algorithm random probability


    【解决方案1】:

    您可以使用geometric distribution。在几何分布中,您获得更大数字的概率呈指数下降。您可以通过调整一些参数来调整您的优先级。

    import numpy
    pr = 0.5
    x = numpy.random.geometric(pr, 1)[0]
    

    在上面的 sn-p 中,x 将对应于您在第一次成功之前必须执行的伯努利试验次数,成功概率为 0.5。

    一般来说,分布返回某个数字 n 的概率等于 (1 - pr)^(n-1) * pr 其中 pr 是您在代码中看到的参数。

    所以现在你应该使用 x-1(因为列表是 0 索引且 x >= 1)作为选择列表中元素的索引,并且由于较小的值有更高的概率出现在分布中,我们已成功满足您的要求 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      相关资源
      最近更新 更多