Генератор псевдослучайных чисел без повторов: различия между версиями

Материал из sysadm
Перейти к навигации Перейти к поиску
(Новая страница: « <pre> Ni+1 = Ni*q - [Ni*q/P]*P P - простое число q = P - 3^m (выбирается близкое к P/2) При P=101, m=3, q=74, получае...»)
 
Строка 8: Строка 8:
 
При P=101, m=3, q=74, получаем псевдослучайную последовательность чисел в диапазоне 1-100 без повторов.
 
При P=101, m=3, q=74, получаем псевдослучайную последовательность чисел в диапазоне 1-100 без повторов.
 
Данная формула использовалась в программе "Морской бой" для программируемого калькулятора MK-54, опубликовано в журнале "Техника молодежи" 1986 №10
 
Данная формула использовалась в программе "Морской бой" для программируемого калькулятора MK-54, опубликовано в журнале "Техника молодежи" 1986 №10
 +
Отсутствие повторов позволяло полностью перебрать все клетки поля 10x10 псевдослучайным образом.
 +
 +
В калькуляторе был встроена функция генерации псевдослучайных чисел, но она не использовалась, потому что порождала повторы и не могла сформировать полный случайный перебор.
 +
Повтор замыкает псевдослучайную последовательность в кольцо.
 +
Наличие повторов в генераторе псевдослучайных делит множество диапазона чисел на несколько не пересекающихся колец, что не позволяет перебрать весь диапазон.
 +
 +
Есть подозрение, что данная формула генерирует одно кольцо полного перебора при любых P и q удовлетворяющих описанным выше условиям.
 
</pre>
 
</pre>

Версия 00:24, 19 октября 2025

Ni+1 = Ni*q - [Ni*q/P]*P

P - простое число
q = P - 3^m  (выбирается близкое к P/2)

При P=101, m=3, q=74, получаем псевдослучайную последовательность чисел в диапазоне 1-100 без повторов.
Данная формула использовалась в программе "Морской бой" для программируемого калькулятора MK-54, опубликовано в журнале "Техника молодежи" 1986 №10
Отсутствие повторов позволяло полностью перебрать все клетки поля 10x10 псевдослучайным образом.

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

Есть подозрение, что данная формула генерирует одно кольцо полного перебора при любых P и q удовлетворяющих описанным выше условиям.