我希望使用
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--; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。