对列表中的第一项进行优先排序(随机和概率分布)
Prioritizing first items in a list (Random & Probability Distribution)
我有一个已排序元素的列表。第一个元素应该优先于最后一个元素。目前,我只使用列表中的 random.choice(foo)
到 select 项。
我正在编写的算法使用不同的概率分布(如上所述)会更有效。不幸的是,我不确定如何实现它
可以使用geometric distribution。在几何分布中,你得到更大数字的概率呈指数下降。您可以通过调整一些参数来调整您的优先级。
import numpy
pr = 0.5
x = numpy.random.geometric(pr, 1)[0]
在上面的代码片段中,x
将对应于您在遇到第一次成功之前必须执行的伯努利试验次数,其中成功概率为 0.5。
一般来说,分布 return 某个数字 n 的概率等于 (1 - pr)^(n-1) * pr 其中 pr 是参数,如您在代码中所见.
所以现在你应该使用 x-1
(因为列表是 0 索引的并且 x
>= 1)作为索引来选择列表中的元素,因为值越小,概率越高从分布中出现,我们已成功捕获您的要求:)
我有一个已排序元素的列表。第一个元素应该优先于最后一个元素。目前,我只使用列表中的 random.choice(foo)
到 select 项。
我正在编写的算法使用不同的概率分布(如上所述)会更有效。不幸的是,我不确定如何实现它
可以使用geometric distribution。在几何分布中,你得到更大数字的概率呈指数下降。您可以通过调整一些参数来调整您的优先级。
import numpy
pr = 0.5
x = numpy.random.geometric(pr, 1)[0]
在上面的代码片段中,x
将对应于您在遇到第一次成功之前必须执行的伯努利试验次数,其中成功概率为 0.5。
一般来说,分布 return 某个数字 n 的概率等于 (1 - pr)^(n-1) * pr 其中 pr 是参数,如您在代码中所见.
所以现在你应该使用 x-1
(因为列表是 0 索引的并且 x
>= 1)作为索引来选择列表中的元素,因为值越小,概率越高从分布中出现,我们已成功捕获您的要求:)