2015-02-11 149 views
-4

標題可能並不描述我實際要做的事情,因爲我不確定它究竟是什麼。計算總體上的概率

我在計算人口中每個項目有被選中概率的人口的結果(使用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; 

但我會怎麼做這在給定的人口?

+0

爲什麼要投票? – bflemi3 2015-02-11 18:36:03

+0

不是downvoter(儘管如此)。這似乎不是一個編程問題。它是一個數學問題,用一些代碼來解釋你在做什麼。 – BradleyDotNET 2015-02-11 18:36:55

+3

我投票結束這個問題作爲題外話,因爲它關於計算一個數學問題的概率,而不是一個編程問題。 – BradleyDotNET 2015-02-11 18:38:40

回答

1

從我的理解,你想要一個函數,需要一個人口大小和給定的概率,個別事件,並提供隨機結果?

所以是這樣的:(再次,10在你的例子)

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是人口規模

1

如果你正在試圖提取給出Person一個列表,你可以選擇其中的一些像這樣的Person(人口), 名單的10%:

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 
}