
Сообщение от
Bedazzle
Пять тысяч значений ложатся так:
1. Это с 8-ю битами (N=255) ?
2. Что это, как построен график. Шагали по оси абсцисс и отражали по оси ординат полученное ПСЧ?
Выше это был пример. Для практической реализации надо использовать минимум N=65535
Код:
LD HL, (SEED)
LD D,H
LD E,L
ADD HL,HL
ADD HL,HL
ADD HL,DE ; HL=HL*5
INC HL ; + 1
LD (SEED),HL
RET
SEED: DW 0
Для работы с длинными последовательностями следует брать минимум N=65535. Длина последовательности будет 2^16.
"качество" ПСЧ-последовательности можно простейшим способом анализировать путем взятия двух соседних отсчетов и отображения их по X,Y.
Если между X и Y существует корреляция, то точки начнут выстраиваться в какие-либо структуры (чаще полоски) и заполнение экрана будет не равномерным.
Распределение точек по экрану должно быть шумоподобное (Монте-Карло), т.е. точки должны ставиться равномерно по всей площади экрана.
В 90х годах у меня была статья по нескольким генераторам ПСЧ которые я нашел в игрушках. Скорее всего это "самоделки" программистов. Все они в той или иной степени проваливали даже описанный выше тест звездного неба.
Для реальной оценки ПСЧ существуют известные статистические тесты, например спектральный тест.
Линейный конгруэнтный генератор не идеален, имеет недостатоки (см. статью wikipedia). Однако он простейший и быстрейший, т.е. обладает необходимым балансом качеств. Сейчас существуют современные и чуть более сложные алгоритмы генераторов ПСЧ, см. https://en.wikipedia.org/wiki/List_o...ber_generators
в библиотеке такой более сложный генератор имеет смысл предлагать опционально.