Последовательности ФибоначчиИнтересный класс генераторов случайных чисел неоднократно
предлагался многими специалистами целочисленной арифметике, в
частности Джорджем Марсалиа и Арифом Зейманом. Генераторы этого
типа основаны на использовании последовательностей Фибоначчи.
Классический пример такой последовательности {0, 1, 1, 2, 3, 5,
8, 13, 21, 34...}. За исключением первых двух ее членов, каждый
последующий член равен сумме двух предшествующих. Если брать
только последнюю цифру каждого числа в последовательности, то
получится последовательность чисел {0, 1, 1, 2, 5, 8, 3, 1, 4, 5,
9, 4...} Если эта последовательность применяется для начального
заполнения массива большой длины, то, используя этот массив,
можно создать генератор случайных чисел Фибоначчи с
запаздыванием, где складываются не соседние, а удаленные числа.
Марсалиа и Зейман предложили ввести в схему Фибоначчи "бит
переноса", который может иметь начальное значение 0 или 1.
Построенный на этой основе генератор "сложения с переносом"
приобретает интересные свойства, на их основании можно создавать
последовательности, период которых значительно больше, чем у
применяемых в настоящее время конгруэнтных генераторов. По
образному выражению Марсалиа, генераторы этого класса можно
рассматривать как усилители случайности. "Вы берете случайное заполнение
длиной в несколько тысяч бит и генерируете длинные
последовательности случайных чисел". Однако большой период сам по
себе еще не является достаточным условием. Слабые места гамм
бывает трудно обнаружить и аналитику требуется применять
утонченные методы анализа последовательностей, чтобы выделить
определенные закономерности, которые скрыты в большом массиве
цифр.
|