Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > генерация биграмм


Автор: darel86 20.3.2010, 10:27
Здравствуйте.
Подскажите пожалуйста, как генерировать текст на основе вероятности встречаемости символов и биграмм(все значения вероятностей известны,естьи значения вероятности триграмм)?
Например текст без вероятности встречаемости символов можно генерировать так : берём например ГСЧ,генерируем число, берём его по модулю 32,из массива добавляем символ.
А вот с вероятностью как?Помогите пожалуйста.

Автор: GoldFinch 20.3.2010, 11:54
например задать вероятности как есть массив целых положительных чисел (таблица вероятностей),
брать из ГСЧ число от 0 до N, где N - сумма всех чисел в массиве, потом определять какому символу оно соответствует

т.е. если есть 3 символа с вероятностями 10, 30 и 20
генерим 0< x < (10+30+20), допустим 15, и видим что оно соответствует 2му символу: 10<15<10+30

Автор: darel86 22.3.2010, 20:09
Спасибо!
Да, так и нужно для частоты встречаемости символов.
Уже пишу.
А как быть с биграммами? Там матрица 32х32 сумма элементов 4985. 
В-принципе можно брать строку текущего символа, вычислить сумму строк до него и после, в этих пределах потом генерировать число,
с последующим выбором, который вы предложили.Но как быть с пробелом его в матрица нет, блин.Или вот: смотреть если "не пробел",то генерить с учётом биграмм, если "пробел",то "пробел" )))).
Может так.Или есть ошибки в моей логике?

Автор: darel86 29.3.2010, 09:57
Так,текст с учётом биграмм у меня генерируется,но вот проблема,частота встречаемости отдельных символов изменилась.
Ну это и понятно, ведь генерируется с учётом биграмм, а не отдельных символов.
Может кто подскажет,как генерировать,чтобы генерация с учётом биграмм выдовала эталонную частоту встречаемости символов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)