如何根据百分比概率做出选择
本文关键字:选择 概率 百分比 何根 | 更新日期: 2023-09-27 17:57:04
我希望使用本文中提供的答案从列表中随机选择唯一项目。
按照所描述的方法,在我的循环的每次迭代中,我都会生成一个概率值,即从列表中选择当前项目的百分比机会。
我需要知道的是如何使用此百分比值来选择(或不选择)项目。
这是我的代码,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--;
}
}