当前位置: 首页 > 知识库问答 >
问题:

如何基于百分比概率做出选择

郎雪风
2023-03-14

我希望使用本文提供的答案从列表中随机选择独特的项目。

按照所描述的方法,在我的循环的每次迭代中,我都会生成一个概率值,它是当前项目从列表中被选中的概率百分比。

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

这是我拥有的代码,剩余索引列表

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

像素ToAdd是120,剩余索引。Count是3600。我从0.0333333351开始的概率值

解决方案应该是灵活的,可以处理更大范围的值,最好是任何值。

谢啦

议论

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


共有1个答案

葛雪松
2023-03-14

要使用您的概率,请将其与[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--;
    }
}
 类似资料:
  • 我有以下代码片段: 我的问题是,它真的计算出25%的概率在这里获胜吗?球员在这里获胜的几率真的是25%吗? 编辑: 我刚刚写了这个: 它非常不准确。它从大约0.15到0.3。 但是当我做更多的检查时(从(i 这是为什么?为什么100张支票不够精确?

  • 关于这些例子,你知道我如何实现概率吗。 应该在属性中循环 在顶部、右侧、底部和左侧循环以检索其成功率值 随机检索一个方向,根据它的成功率(也就是它的概率)与所有东西进行比较。概率越高的人被呼叫的几率越高 程序在setInterval内,每次interval循环时,都会打印值。我尝试了很多不同的方法,但我想不出来。 更新对于我目前遇到的实际问题。 您可以忽略“未找到”。它只是一个随机字符串。数字根据

  • 我需要根据该值被选择的百分比概率选择一个值。例如: 时间增量值a的10% 时间增量值b的20% 时间增量值c的30% 时间增量值d的40% 百分比加起来总是正好100% 我遇到过几种像这样的解决方案,但我确定它们不可能是正确的。以下是使用上述解决方案构建的示例程序: 输出: 预期输出: 我相信我需要使用某种算法将百分比转换为从0到99的刻度,以便随机数生成器可以准确地选择一个值。不过,我想不出如何

  • 让我们假设我有一个这样的结构化数组: 我将这个结构称为“categories”,所以,我在这个数组中有六个类别。我的目标是根据一个类别随机挑选一个产品。 我想做一个基于速率的类别选择,据我所知,我必须计算这个类别在数组中代表多少百分比,例如: 这会给我类似的东西: 好的,现在我要做一个简单的算法,根据这些比率得到类别;我想我现在需要在范围之间选择一个随机数,并制作一些“切片”,例如: 如果随机数介

  • 问题内容: Python是否有标准函数根据输入的0到1之间的随机数概率输出True或False? 我的意思的例子: 上面的示例中,如果输入0.7,将以70%的概率返回True,以30%的概率返回false 问题答案:

  • 问题内容: 制作按宽度占据其父容器固定百分比的容器的最简单方法是什么? 当其父容器的宽度更改时,其宽度应更新。 我尝试使用,但是当父容器的宽度更改时,它不会更新。 问题答案: 您想要的是GridBagLayout。(如何使用?) 使用GridbagLayout可以为添加的每个单个组件定义GridBagConstraints。 这些限制条件包括其在锡罐上的确切说明。这是在“网格行”中所有组件上计算的