Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты по проге.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
630.61 Кб
Скачать

Алгоритм Неймана.

В 1946 году, так называемый метод «середины квадрата». Предыдущее число возводится в квадрат, а из результата извлекаются средние цифры. 10-разрядное число, возводится в квадрат, и из него берется средняя часть длиной в 10 разрядов. Плох тем, что рано или поздно вырождается – в средней части оказываются одни 0. Такая последовательность не случайная, но выглядит как случайная, неплохо перемешивает предыдущее число.

Исследования метода середины квадрата проводил Метрополис, один из первых в методе «Монте – Карло», как и Нейман. Он показал на примере 20-разрядных двоичных чисел, что есть 13 циклов, в который могут превратиться последовательности, длина периода самого большего равна 142.

Алгоритм Д. Кнута.

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

Вывод Кнута: случайные числа нельзя вырабатывать с помощью случайно выбранного алгоритма.

Любой ГПСЧ с ограниченными ресурсами рано или поздно зацикливается — начинает повторять одну и ту же последовательность чисел. Длина циклов ГПСЧ зависит от самого генератора и в среднем составляет  около 2n/2, где n — размер внутреннего состояния в битах, хотя линейный конгруэнтный обладает максимальным циклом порядка 2n. Если порождаемая ГПСЧ последовательность сходится к слишком коротким циклам, то такой ГПСЧ становится предсказуемым и непригодным для практических приложений.

Основные недостатки простых арифметических генераторов:

  • Слишком короткий период.

  • Последовательные значения не являются независимыми.

  • Некоторые биты «менее случайны», чем другие.

  1. Линейный конгруэнтный метод

(к -соразмерный, соответствующий)

Предложен Дерриком Лемером в 1948, один из алгоритмов генерации псевдослучайных чисел. Применяется в простых случаях и не обладает криптографической стойкостью (способность противостоять возможным атакам). Входит в стандартные библиотеки различных компиляторов. Линейный конгруэнтный метод заключается вычислении членов линейной рекуррентной ( каждый член выражается через предыдущие члены) последовательности по модулю некоторого натурального числа m, задаваемой следующей формулой:

где a  - множитель, a>=0, X0 - начальное значение >=0, с – приращение >=0, m модуль ( m>X0, m>a, m>c).

Частным случаем является с=0, что и было принято в первоначальном методе Лемера, когда процесс выработки происходит быстрее, но это уменьшает длину периода последовательности. Возможно употребление термина «мультипликативный» км для с=0 и смешанный км для с не равно 0.

Получаемая последовательность зависит от выбора стартового числа X0 и при разных его значениях получаются различные последовательности случайных чисел. В то же время, многие свойства этой последовательности определяются выбором коэффициентов в формуле и не зависят от выбора стартового числа.

Характеристики ЛКГ:

  1. Период генератора (количество чисел, которое можно получить случайно). Конгруэнтные последовательности всегда зацикливаются. Повторяющийся цикл называется периодом. Период – min k | x(n+k) = xn для любого n.

  2. Разброс генератора. Хороший разброс, если все числа из некоторого диапазона (а,в) появляются с одинаковой вероятностью для любых а, в.

  3. Мощность Нельзя получить период, больший, чем m. (0 … m-1). Мощность - такое наименьшее целое число s, что Такое s всегда существует, когда выполняются условия теоремы 1. Показывает, есть ли линейная зависимость между соседними членами последовательности. Когда она маленькая, видно, что есть связь, поэтому S 5. Чтобы мощеость большая, нужно избегать слишком простого по виду набора цифрю

Пример последовательности 769079690… х0=а=с=7, м=10. Последовательность чисел, порождаемая линейным конгруэнтным методом, периодична с периодом, не превышающим m.