加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何根据概率百分比做出选择

发布时间:2020-12-15 05:37:48 所属栏目:百科 来源:网络整理
导读:我希望使用 this帖子中提供的答案从列表中随机选择唯一的项目. 按照所描述的方法,在我的循环的每次迭代中,我生成概率值,该概率值是从列表中挑选当前项目的概率百分比. 我需要知道的是如何使用此百分比值来选择项目(或不是). 这是我的代码,remainingIndices是
我希望使用 this帖子中提供的答案从列表中随机选择唯一的项目.

按照所描述的方法,在我的循环的每次迭代中,我生成概率值,该概率值是从列表中挑选当前项目的概率百分比.

我需要知道的是如何使用此百分比值来选择项目(或不是).

这是我的代码,remainingIndices是List< int>

for (var i = 0; i < remainingIndices.Count; i++)
{
    var probability = pixelsToAdd / (float)(remainingIndices.Count - i);
}

pixelsToAdd为120,remainingIndices.Count为3600.
我得到的概率值从0.0333333351开始

解决方案应该灵活,可以使用更广泛的值,最好是任何值.

谢谢

评论

对于这个问题的未来读者,我应该澄清,起初我认为概率值是0到100之间的一些百分比,但实际上它是介于0和1之间的值,因此与Random.NextDouble()的返回值完全匹配.因此可以用于比较,如下面的答案中所述.

解决方法

要使用概率,请将其与[0,1]上均匀分布后的随机变量样本进行比较.
if (Random.NextDouble() <= probability)
    // Take the ith element in the list

结果循环将是:

List<???> selectedItems = new List<???>();
for (var i = 0; i < remainingIndices.Count; i++)
{
    var probability = pixelsToAdd / (float)(remainingIndices.Count - i);
    if (Random.NextDouble() <= probability)
    {
        selectedItems.Add(items[i]);
        pixelsToAdd--;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读