在C#中从List中选择N个随机元素。

12 浏览
0 Comments

在C#中从List中选择N个随机元素。

我需要一个快速的算法来从通用列表中选择5个随机元素。例如,我想从一个List中获取5个随机元素。

admin 更改状态以发布 2023年5月23日
0
0 Comments

遍历每个元素,使选择的概率等于(所需数量)/(剩余数量)

因此,如果您有40个项目,则第一个项目被选中的机会为5/40。如果它被选中,则下一个项目具有4/39的机会,否则它具有5/39的机会。当你到达结尾时,你会有你的5个项目,通常在那之前你会拥有全部。

这种技术称为选择抽样,它是水库抽样的一种特殊情况。它的性能类似于对输入进行洗牌,但当然允许生成样本而不修改原始数据。

0
0 Comments

使用linq:

YourList.OrderBy(x => rnd.Next()).Take(5)

0