Кpиптогpафия от папиpуса до компьютеpа


Пробковые информационные стенды Пробковые стенды напольные.

Простейшие алгоритмы генерации - часть 4


необязательно получится х=у, потому что оператор RANDOMIZE переустанавливает не всё случайное число из 3 байт, а лишь его часть из 2 байт. Точная установка может быть произведена функцией RND, как x=RND(-231). Не нужно думать, что эта проблема встречается лишь при программировании на Бейсике. Паскаль и Си всех фирм дают те же результаты. А вот увеличение периода последовательности сделать несколько сложнее. Для этого можно использовать функцию:

     FUNCTION Rand (х, у)
     х = RND (-х)
     у = RND (-у): IF у = О THEN у = RND (-у)
     Rand = (х+у) MOD 1
     END FUNCTION

Период такой функции равен 2**24-(2**24-1), но вот свойства его ряда не обязаны при любых исходных х и у быть такими же хорошими, как у RND.
     При создании с помощью встроенного генератора случайных чисел объектов, имеющих число состояний большее, чем у генератора, его приходится использовать несколько раз, переустанавливая по заранее заданному ключу. Например, следующий фрагмент программы:

     FOR i = 1 ТО 5
     х = RND (-gamma (i))
     FOR j = 0 TO 32
     SWAP map (j), map (32 * RND)
     NEXT: NEXT

производит случайную перестановку 33 элементов массива map, которая может быть сделана примерно 2**118 способами, и при длине периода генератора в 2**24, его нужно запустить не менее 5 раз, чтобы реализовать все варианты перестановки.




Содержание  Назад  Вперед