Algorithm 动态有偏随机选择算法
我希望实现一种算法,从列表中随机挑选项目,尽管是以有偏见的方式。假设列表中的每个元素都有一个值优先级。我希望具有更高优先级的元素更频繁地出现在选择中 另一件事是,这些元素的优先级将会改变。如果有人特别挑选某个元素,而不是让该元素来自随机选择,则该元素的优先级应增加某个因素 恐怕我不太清楚如何用数学的方法来表达我的问题。而且,我也不知道从哪里开始。我发现一篇文章涉及第一部分,但没有涉及动态增加元素优先级 我想到的一种方法是,元素的优先级越高,我们对它的复制就越多。然而,在计算机代码中实现这一点是非常不可行的 我也在math.stackexchange上发布了这个问题,希望获得一些数学方面的见解Algorithm 动态有偏随机选择算法,algorithm,random,selection,Algorithm,Random,Selection,我希望实现一种算法,从列表中随机挑选项目,尽管是以有偏见的方式。假设列表中的每个元素都有一个值优先级。我希望具有更高优先级的元素更频繁地出现在选择中 另一件事是,这些元素的优先级将会改变。如果有人特别挑选某个元素,而不是让该元素来自随机选择,则该元素的优先级应增加某个因素 恐怕我不太清楚如何用数学的方法来表达我的问题。而且,我也不知道从哪里开始。我发现一篇文章涉及第一部分,但没有涉及动态增加元素优先级 我想到的一种方法是,元素的优先级越高,我们对它的复制就越多。然而,在计算机代码中实现这一点是非
注意:我只是想说清楚,我不希望有任何类似的实现。我只是在寻找一个明确的方向/一些见解,以便我可以继续编写自己的算法。我现在可以想到的一个可能的方法是 假设有两个数组,优先级[k]和值[k]
priority[]={2,1,5,7}
values[]={"apple","banana","oranges","lollipop"}
要以有偏差的方式获取随机值:1.让优先级数组的和为S。在本例中,S=15。
2.具有优先级数组的累积数组,
`cumulative[]= {2,3,8,15}
三,。现在生成一个随机数r作为一个轻微的加速,在生成随机数r之后,您可以使用二进制搜索找到相应的数组位置(因为部分和的列表不会减少)。
priority[]={2,1,7,7}
values[]={"apple","banana","oranges","lollipop"}
cumulative={2,3,10,17}