Я предполагаю, что вы будете хранить частоты, число с плавающей точкой между 0 и 1, что общим сделать 1.
Во-первых, вы должны подготовить таблицу кумулятивных частот, т.е. сумму частоты этого письма и все письма до него.
Для упрощения, если вы начнете с этим распределением частот:
A 0.1
B 0.3
C 0.4
D 0.2
Ваша совокупная таблица частот будет:
A 0.1
B 0.4 (= 0.1 + 0.3)
C 0.8 (= 0.1 + 0.3 + 0.4)
D 1.0 (= 0.1 + 0.3 + 0.4 + 0.2)
Теперь генерировать случайное число в диапазоне от 0 до 1 и увидеть, где в этом списке, что число лежит. Выберите букву, которая имеет наименьшую кумулятивную частоту больше, чем ваш случайное число. Некоторые примеры:
Допустим, вы случайно выбрать 0,612. Это лежит в диапазоне от 0,4 до 0,8, то есть между B и C, так что вы выбрали бы C.
Если случайное число было 0,039, что предшествует 0,1, то есть до А, так выберите A.
Я надеюсь, что имеет смысл, в противном случае, не стесняйтесь обратиться за разъяснения!