标题可能无法描述我实际上想要做的事情,因为我不确定它的确切内容。
我试图计算人口中每个项目都有被选中概率的人口结果(使用c#)。例如,假设有十个人,并且有10%的可能性将选择任何给定的人作为结果。因此对于结果1可能选择了3个人但是对于结果2可能选择了0个。
我理解如何在10%的几率下计算1人的结果:
Random r = new Random();
double v = r.nextDouble();
if (v <= 0.10) { return 1; }
return 0;
但是我如何在特定人群中这样做呢?
答案 0 :(得分:1)
如果您尝试提取Person
(人口)列表的10%,
给定Person
列表,您可以选择其中一些:
Random r = new Random();
List< Person > population;
// fill the population list
var selectedPopulation = population.Where( x=> r.nextDouble() < 0.1 ).ToList();
然后您可以迭代选定的人:
foreach( var person in selectedPopulation )
{
// do you work
}
答案 1 :(得分:1)
根据我的理解,您需要一个能够获取人口规模和单个事件的给定概率的函数,并提供随机结果?
类似于:
public int Outcome(int p, int n){
var random = new Random();
int count = 0;
int rnd = 0;
for (var i = 0; i < n; i++)
{
rnd = random.Next(0, 100);
if (rnd <= p) count++;
}
return count;
}
其中p
是单个事件作为百分比的概率(在您的示例中为10),n
是总体大小(在您的示例中再次为10)。