Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / реферат Черкасова.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
5.24 Mб
Скачать

Реализация на языке c#.

ulong x; if (mti >= NN) { // generate NN words at one time for (var i = 0; i < NN - MM; i++) { x = (mt[i] & UM) | (mt[i + 1] & LM); mt[i] = mt[i + MM] ^ (x >> 1) ^ MAG01[(int) (x & 0x1L)]; } for (var i = NN - MM; i < NN - 1; i++) { x = (mt[i] & UM) | (mt[i + 1] & LM); mt[i] = mt[i + (MM - NN)] ^ (x >> 1) ^ MAG01[(int) (x & 0x1L)]; } x = (mt[NN - 1] & UM) | (mt[0] & LM); mt[NN - 1] = mt[MM - 1] ^ (x >> 1) ^ MAG01[(int) (x & 0x1L)]; mti = 0; } x = mt[mti++]; x ^= (x >> 29) & 0x5555555555555555L; x ^= (x << 17) & 0x71d67fffeda60000L; x ^= (x << 37) & 0xfff7eee000000000L; x ^= x >> 43; return x;

Рис. 7. Визуализация результатов работы генератора Вихрь Мерсенна.

Сравнение генераторов.

Линейный конгруэнтный генератор.

Достоинства:

  • Простота реализации (2 строчки кода)

  • Быстрота работы

  • Малое потребление памяти

Недостатки:

  • Небольшой период (обычно до m)

  • Плохие статистические свойства: последовательности могут быть предсказуемыми

  • Малопригоден для криптографии и серьёзного моделирования

Применение:

  • Игры, простые симуляции, тестовые задачи

XORshift.

Достоинства:

  • Очень быстрая работа

  • Минимальное потребление памяти (1-3 числа состояния)

  • Простота встраивания в систему

Недостатки:

  • Среднее качество случайности (лучше LCG, хуже MT)

  • Некоторые версии уязвимы к плохим стартовым значениям

  • Не рекомендуется для крипто- и сложного научного использования

Применение:

  • Игровая индустрия, простые приложения, работа в ограниченных по памяти и скорости условиях

Вихрь Мерсенна.

Достоинства:

  • Очень длинный период (2^19937−1)

  • Хорошие статистические свойства: проходит почти все тесты случайности

  • Широко применим как стандарт "качества" ПГСЧ

Недостатки:

  • Более сложная реализация

  • Высокое потребление памяти (около 2.5 КБ)

  • Не годится для криптографии (можно восстановить состояние по 624 выходным числам)

Применение:

  • Моделирование, компьютерная графика, статистика, научные задачи

В таблице приведена длительность для алгоритмов в миллисекундах.

Название генератора

0..n

0 seed 0..n

100 seed 0..n

Линейный конгруэнтный генератор

10

28

699

XORshift

7

26

420

Вихрь Мерсенна

11

1870

2673

Табл. 1. Длительность для алгоритмов в миллисекундах.

Линейный конгруэнтный генератор — самый простой и быстрый, но с наихудшим качеством случайности.

XoRshift — компромисс между скоростью, простотой и неплохой случайностью там, где не требуется строгое соответствие тестам.

Вихрь Мерсенна — золотой стандарт для науки и моделирования, с очень длинным периодом и отличной случайностью.

Вывод.

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

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

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

15

Соседние файлы в папке лабы