Смекни!
smekni.com

Генератор псевдотекстов (стр. 3 из 3)

Начальные значения текущих четырёх букв одинаковы и равны EOL. В цикле при каждой итерации выбирается случайная буква, соответствующая текущим, и если она не является концом строки, она выводится на стандартный вывод, в противном случае программа завершается. Далее происходит сдвиг текущих букв, и только что выведенная буква становится последней буквой этой цепочки. Эти действия повторяются, пока не будет выведено необходимое число букв.

#----------------------------------------------------------------

# Программа 4. Генератор псевдотекста, анализирующий вероятность

# появления в тексте буквы после четырёх букв.

# Запуск: gawk -f prog4.awk textfile.txt

#----------------------------------------------------------------

BEGIN {

MAXGEN = 200

EOL = "\n"

c0 = c1 = c2 = c3 = EOL

}

{

for (i = 1; i <= length($0); i++) {

c = substr ($0, i, 1)

statetab[c0,c1,c2,c3,++nsuffix[c0,c1,c2,c3]] = c

c0 = c1

c1 = c2

c2 = c3

c3 = c

}

}

END {

srand ()

statetab[c0,c1,c2,c3,++nsuffix[c0,c1,c2,c3]] = EOL

c0 = c1 = c2 = c3 = EOL

for (i = 0; i < MAXGEN; i++) {

r = int (rand () * nsuffix[c0,c1,c2,c3]) + 1

p = statetab[c0,c1,c2,c3,r]

if (p == EOL) {

exit

}

printf ("%c", p)

c0 = c1

c1 = c2

c2 = c3

c3 = p

}

}

3.5 Генератор псевдотекста с использованием SIMP-таблиц

В данной программе массив a содержит строки таблицы A, массив b - строки таблицы B, и т.д. После инициализации массивов инициализируется генератор псевдослучайных чисел. В цикле генерируются 4 случайных числа - индексы массивов, и соответствующие строки выводятся на стандартный вывод.

#---------------------------------------------------------------

# Программа 5. Генератор псевдотекста с использованием

# SIMP-таблиц.

#---------------------------------------------------------------

BEGIN {

a[1] = "В частности "

a[2] = "С другой стороны, "

a[3] = "Однако "

a[4] = "Аналогично, "

a[5] = "Таким образом "

a[6] = "Нетрудно видеть, что "

a[7] = "Как показывают приведённые выше соображения, "

a[8] = "Например, "

a[9] = "Итак, "

a[0] = "Что касается нашей конкретной задачи, то "

b[1] = "гиперповерхность в пространстве состояний "

b[2] = "постоянный поток эффективной информации "

b[3] = "отличительная особенность выбранных критериев "

b[4] = "инициация развития критической подсистемы "

b[5] = "комплексная программа испытаний "

b[6] = "траектория в конфигурационном пространстве "

b[7] = "нагруженный несущий элемент "

b[8] = "включение дополнительных внутренних связей "

b[9] = "независимый принцип функционирования "

b[0] = "первичное отношение между подсистемой и технологией подсистемы "

c[1] = "находит широкое применение и требует "

c[2] = "сводит до минимума затраты при условии "

c[3] = "указывает на пределы применимости "

c[4] = "свидетельствует о необходимости более тщательного анализа "

c[5] = "чрезвычайно усложняется, если не принять во внимание условие"

c[6] = "подразумевает более основательное использование теории "

c[7] = "открывает весьма интересные перспективы "

c[8] = "признаёт значимость других систем и необходимость "

c[9] = "позволяет эффективно использовать "

c[0] = "требует применения "

d[1] = "более тонкой аппаратурной реализации."

d[2] = "оборудования четвёртого поколения."

d[3] = "тестирования четвёртого поколения."

d[4] = "проектирования на основе системного подхода."

d[5] = "предварительного отбора данных по определённым критериям."

d[6] = "гибкого, изменяющегося в зависимости от условий, описания."

d[7] = "интеграции и специализации."

d[8] = "более строгой стандартизации основных модулей."

d[9] = "функционирования в режиме дискретного времени."

d[0] = "разветвления сети сопровождения и поддержки."

srand ()

for (i = 0; i < 10; ++i) {

printf ("%s%s%s%s&bsol;n",

a[int (rand () * 10)],

b[int (rand () * 10)],

c[int (rand () * 10)],

d[int (rand () * 10)])

}

}

4. Заключение

Итогом данной курсовой работы стали 5 различных генераторов псевдотекстов. Эти генераторы были протестированы и отлажены на большом количестве входных данных. Результаты их работы свидетельствуют о достижении автором поставленных целей. В процессе её выполнения автором были более глубоко изучены алгоритмы генерации псевдотекстов и накоплен опыт в построении и реализации данных алгоритмов. Также внимание автора было уделено изучению теории вероятности, некоторых аспектов языка AWK, значительного количества разнообразных русскоязычных текстов. Все трудности, возникшие в ходе выполнения курсовой работы, были успешно преодолены, а полученные результаты могут быть использованы при создании генераторов псевдотекстов, не уступающих генераторам таких известных корпораций, как Microsoft, IBM, Symantec, Adobe.

5. Библиография

1. Гарднер, М. Путешествие во времени / М. Гарднер. – М.: Мир, 1990. – 341 с., ил.

2. Гасфилд, Д. Строки, деревья и последовательности в алгоритмах: Информатика и вычислительная биология / Пер. с англ. И. В. Романовского. – СПб.: Невский диалект; БХВ-Петербург, 2003. – 654 с.: ил.

3. Керниган, Б. Язык программирования С, 2-е издание / Б. Керниган, Д. Ритчи. – М.: Издательский дом “Вильямс”, 2006. – 304 с.: ил.

4. Яглом, А. Вероятность и информация / А.М. Яглом, И.М. Яглом. – М.: Наука, 1973. – 512с.: ил.