Генерация букв с заданными частотами в C#

В этом примере генерируются случайные буквы с частотами, которые они имеют в обычном английском тексте. Следующий код показывает, как этот пример запускается.

В массиве Frequencies содержатся относительные процентные частоты букв, перечисленные в Wikipedia . Этот пример рассматривает эти числа как проценты, так что, например, буква A должна появиться примерно в 8,176% времени. Если эти числа являются некоторыми другими значениями, такими как фракции между 0 и 1, вы можете соответствующим образом настроить программу. Если они подсчитываются, например, количество вхождений в определенном фрагменте текста, вы можете добавить их для преобразования их в проценты.

Код создает объект Random и определяет значение буквы A как целое для дальнейшего удобства.

Обработчик событий Load в форме добавляет все значения в Frequencies. В этом примере частоты не составляют до 100%, потому что они не на странице Википедии, где я их получил. Чтобы сделать общее количество до 100%, код добавляет их, вычитает общее количество из 100 и добавляет разницу в букву E, увеличивая или уменьшая частоту E немного, так что общее количество составляет 100%.

При нажатии кнопки «Создать» выполняется следующий код.

Для каждой из букв, которые он должен сгенерировать, программа выбирает случайное число между 0 (включительно) и 100 (исключение). Затем он перебирает значения в массиве частот, вычитая их из случайного значения. Когда случайное значение достигает 0, программа использует букву, соответствующую самой последней вычитаемой частоте. Предполагая, что Random генерирует числа с достаточно равномерным распределением (и это довольно хорошо), это означает, что каждая буква выбрана примерно с той же частотой, что и в массиве Frequencies.

Источник: http://csharphelper.com/blog/2017/11/generate-letters-with-given-frequencies-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *