gpt4 book ai didi

c# - 从排序列表中加权随机选择

转载 作者:行者123 更新时间:2023-11-30 15:26:14 28 4
gpt4 key购买 nike

我有一个问题,我有一大堆按“权重”排序的项目。我需要能够从此列表中随机选择项目,但越接近开始(权重越大)的项目必须有更大的机会根据“精英主义”因素被选中。

我知道以前有人问过类似的问题,但这里要注意的是这个列表会随着时间的推移而改变。删除最后一项时,新值将被排序到列表中(以保持大小不变​​的“优化”值池)。

首先,最有效的选择方法是什么?必须从 50 到 1000 项长度不等的列表中实时进行选择。

其次,在这里使用什么数据结构最好?我正在使用 C#。

我只是想到了一个可能的解决方案,但我希望得到一些关于这个想法的反馈。如果我要生成一个特定范围内的随机浮点值,然后按照对它求平方的方式做一些事情,会怎样?小值将返回小值,大值将返回大得多的值。据我所知,将此结果映射到列表的长度应该会产生预期的效果。这听起来对吗?

最佳答案

很遗憾,我现在无法提供任何代码,但有一些想法:

由于您的列表是从高权重到低权重排序的,因此您应该能够使用基于正态分布的随机数生成器。如果手边没有这样的随机数生成器,可以使用此处的代码将均匀分布转换为正态分布:Random Gaussian Variables

我不善于解释,但我会尝试:您可以将偏差(平均值)定义为 0,将西格玛(偏差)定义为 3。然后您从生成的数字中获取绝对值,因为您可能会得到负数。

这将为您提供一个数字生成器,它在偏差数(上例中为 0)附近的概率很高,而偏离那里的数字概率较低。

正如我所说,我不擅长解释

关于c# - 从排序列表中加权随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819994/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com