2015-02-11 2 views
-4

Название может не описывать то, что я на самом деле пытаюсь сделать, потому что я не уверен, что именно он называется.Вычисление вероятностей над населением

Я пытаюсь вычислить результат (с использованием C#) населения, где каждый элемент в популяции имеет вероятность выбора. Например, скажем, что десять человек, и есть вероятность 10%, что любой человек будет выбран для достижения результата. Таким образом, для результата1 может быть выбрано 3 человека, но для результата2 возможно 0.

Я понимаю, как вычислить результат для 1 человека дал 10% шанс:

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

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

Но как бы я сделать это в течение определенного населения?

+0

Почему голос? – bflemi3

+0

Не нисходящий (думая об этом, хотя). Это пока не похоже на вопрос программирования. Его математический вопрос с некоторым кодом, объясняющим, что вы делаете. – BradleyDotNET

+3

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он вычисляет вероятность, которая является математическим вопросом, а не программированием. – BradleyDotNET

ответ

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

Если вы пытаетесь извлечь 10% из списка Person (население), данный список 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 
} 
Смежные вопросы