计算人口的概率

Calculating probabilities over a population

标题可能没有描述我实际尝试做的事情,因为我不确定它到底叫什么。

我正在尝试计算总体的结果(使用 c#),其中总体中的每个项目都有被选中的概率。例如,假设有十个人,并且有 10% 的机会选择任何给定的人来获得结果。因此,对于结果 1,可能选择了 3 人,但对于结果 2,可能选择了 0 人。

我知道如何计算 1 个人的结果,给定 10% 的机会:

Random r = new Random();
double v = r.nextDouble();

if (v <= 0.10) { return 1; }
return 0;

但是我将如何针对给定的人群执行此操作?

如果您尝试提取 Person(人口)列表的 10%, 给出 Person 的列表,你可以 select 其中一些像这样:

Random r = new Random();
List< Person > population;
// fill the population list
var selectedPopulation = population.Where( x=> r.nextDouble() < 0.1 ).ToList();

然后您可以迭代 selected 人:

foreach( var person in selectedPopulation )
{
   // do you work
}

据我了解,您想要一个函数来获取人口规模和单个事件的给定概率,并提供随机结果?

所以像这样:

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。)