Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算总体上的概率_C#_Probability - Fatal编程技术网

C# 计算总体上的概率

C# 计算总体上的概率,c#,probability,C#,Probability,这个标题可能无法描述我实际上想做什么,因为我不确定它到底叫什么 我试图用c来计算一个总体的结果,其中总体中的每个项目都有被选中的概率。例如,假设有10个人,有10%的几率任何给定的人都会被选中。因此,对于结果1,可能会选择3人,但对于结果2,可能会选择0人 我了解如何计算10%几率的1人的结果: Random r = new Random(); double v = r.nextDouble(); if (v <= 0.10) { return 1; } return 0; 但是在给定

这个标题可能无法描述我实际上想做什么,因为我不确定它到底叫什么

我试图用c来计算一个总体的结果,其中总体中的每个项目都有被选中的概率。例如,假设有10个人,有10%的几率任何给定的人都会被选中。因此,对于结果1,可能会选择3人,但对于结果2,可能会选择0人

我了解如何计算10%几率的1人的结果:

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

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

但是在给定的人群中,我该怎么做呢?

如果你想从人群中抽取10%的人, 给定一个人员列表,您可以选择其中一些人员,如下所示:

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

据我所知,你想要一个函数,它接受一个总体大小,一个给定的单个事件概率,并提供一个随机结果

比如:

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。

不过,不是下行投票人考虑的。这似乎还不是一个编程问题。这是一个数学问题,有一些代码解释你在做什么。我投票结束这个问题,因为它是关于计算概率的,这是一个数学问题,而不是一个编程问题。对我来说似乎是一个代码问题,因为我是用cSure写的,但大多数数学问题都可以用给定的语言编码。首先你需要理解数学,一个数学问题,然后如果你遇到麻烦,你可以问一下如何在代码中实现它。这不正是我正在做的吗?我在计算人口时遇到了麻烦
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;
}