计算人口的概率
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。)
标题可能没有描述我实际尝试做的事情,因为我不确定它到底叫什么。
我正在尝试计算总体的结果(使用 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。)