小编Gab*_*iel的帖子

从C#中的加权列表中选择x个随机元素(无需替换)

更新:我的问题已经解决,我在我的问题中更新了代码源以匹配Jason的答案.请注意,rikitikitik的答案是解决从更换样品中挑选卡片的问题.

我想从加权列表中选择x个随机元素.取样无需更换.我找到了这个答案:https://stackoverflow.com/a/2149533/57369,带有Python实现.我在C#中实现了它并进行了测试.但结果(如下所述)与我的预期不符.我不了解Python,所以我很确定在将代码移植到C#时犯了一个错误,但是我无法看到Pythong中的代码在哪里得到了很好的记录.

我选了一张卡10000次,这是我获得的结果(结果是一致的执行):

Card 1: 18.25 % (10.00 % expected)
Card 2: 26.85 % (30.00 % expected)
Card 3: 46.22 % (50.00 % expected)
Card 4: 8.68 % (10.00 % expected)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,卡1和卡4的重量均为1,但是卡1比卡4更经常被选中(即使我选择了2或3张卡).

测试数据:

var cards = new List<Card>
{
    new Card { Id = 1, AttributionRate = 1 }, // 10 %
    new Card { Id = 2, AttributionRate = 3 }, // 30 %
    new Card { Id = 3, AttributionRate = 5 }, …
Run Code Online (Sandbox Code Playgroud)

c# statistics probability

6
推荐指数
1
解决办法
2266
查看次数

标签 统计

c# ×1

probability ×1

statistics ×1