Выберите случайный элемент из взвешенного списка

Я пытаюсь написать программу, чтобы выбрать случайное имя из Список фамилии нашей переписи . Формат списка

Name           Weight Cumulative line
-----          -----  -----      -
SMITH          1.006  1.006      1
JOHNSON        0.810  1.816      2
WILLIAMS       0.699  2.515      3
JONES          0.621  3.136      4
BROWN          0.621  3.757      5
DAVIS          0.480  4.237      6

предполагает, что я загружаю данные в структуру, такую ​​как

Class Name
{
    public string Name {get; set;}
    public decimal Weight {get; set;}
    public decimal Cumulative {get; set;}
}

, какая структура данных будет лучше всего держать список имен, и что было бы лучшим способом выбрать случайное имя из списка, но иметь Распределение имен оказывается таким же, как реальный мир.

Я буду работать только с первыми 10 000 строк, если это имеет значение в структуре данных.

Я пытался посмотреть на некоторые другие вопросы о взвешенной случайности, но у меня есть немного неприятностей, превращая теорию в коде. Я не знаю много о теории математики, поэтому я не знаю, является ли это «с заменой», когда это «с заменой или без», я хочу, чтобы одинаковое имя, способное появиться более одного раза, что когда-либо означает.

10
задан Scott Chamberlain 9 September 2011 в 20:14
поделиться