powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про ДСЧ с буфером
25 сообщений из 55, страница 1 из 3
Задачка про ДСЧ с буфером
    #40088316
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обозначим ДСЧ0 датчик случайных чисел "мощности" 1000, который за первые 1000 последовательных вызовов выдаёт в случайном порядке числа от 0 до 999 (например: 666, 1, 113 ...), а потом "зацикливается", то есть начинает повторно выдавать ту же последовательность чисел (666, 1, 113...), и далее так и выдает их такими "циклами" по 1000 чисел.

Построим на основе ДСЧ0 следующий датчик случайных чисел ДСЧ:

1) возьмем массив размером 1000 ( M(0 to 999) ) и заполним его как-нибудь числами от 0 до 999, например, по возрастанию (0, 1, 2, 3 ... 999);

2) создадим переменную А ("адрес") с начальным значением 0;

3) при каждом вызове ДСЧ будем поступать следующим образом:

а) вызываем ДСЧ0: Х0 = ДСЧ0();

б) увеличиваем А на Х0 по модулю 1000: А = (А + Х0) mod 1000;

в) берем число по адресу А в качестве "выхода" ДСЧ: ДСЧ = М(А);

г) сохраняем Х0 в ячейке А (вместо "использованного" значения): М(А) = Х0.

Вопрос: будет ли "зацикливаться" ДСЧ, а если будет, то начиная с какого "шага" (вызова) и с каким периодом?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088329
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю посчитать будет сложновасто.

Если хочешь просто увеличить период - возьми несколько ГПСЧ с периодами простых
чисел типа 991 и 997 и композицией их получишь новый ГПСЧ с периодом 988027.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088345
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю всю эту мутотень и не могу понять: нужен генератор длиннопериодных последовательностей или, всё-таки, генератор псведо случайных чисел?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088360
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
Вопрос: будет ли "зацикливаться" ДСЧ, а если будет, то начиная с какого "шага" (вызова) и с каким периодом?
Конечно будет.
А вот период.... Ну с ходу, мне так кажется что это будет N^N.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088368
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поэкспериментировал с небольшими массивами, примерно с 3N/2 шага приходят к циклу длиной N.
интересная задачка для теоретического обоснования.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088376
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,
Будет зацикливаться. Цикл из 2000 чисел (или возможно, какой-то делитель 2000) после первых 2000 возможно не повторяющихся.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088378
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Читаю всю эту мутотень и не могу понять: нужен генератор длиннопериодных последовательностей или, всё-таки, генератор псведо случайных чисел?
Так любой генератор псведо случайных чисел генерирует периодическую последовательность, вопрос только в ее длине.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088383
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1

интересная задачка для теоретического обоснования.
По условию задачи ДСЧ0 на полном цикле из 1000 итераций выдает по одному разу каждое число от 0 до 999. "адрес" за цикл увеличится на (0+999)*1000/2 = 499500, по модулю 1000 это 500. За два цикла адрес вернется к 0. После этого адреса будут циклически повторятся, как и значения, складываемые в массив.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088400
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone
Так любой генератор псведо случайных чисел генерирует периодическую последовательность, вопрос только в ее длине
... а также в статистических (распределение и корреляции) и других (криптостойкость - как пример) свойствах.

P.S.
Если вопрос только в периоде, то чем не угодил вихрь Мерсена или что-там ещё придумано?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088440
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone
За два цикла адрес вернется к 0.
но ведь массив М тоже меняется, причем весьма любопытным образом - за период у него меняются местами правая и левая половины. Отсюда сокращение цикла в 2 раза.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088452
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone,

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

В описанной в посте конкретной реализации этой идеи конкретные порождаемые ею параметры 499500 и 1000 получились соразмеримы, и из-за этого "увеличение мощности" оказалось незначительным. Но ведь можно сделать размер буфера не 1000,а 997 (например)...
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088481
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... Но ведь можно сделать размер буфера не 1000,а 997 (например)...

Или не экономить на вызовах ДСЧ0 и реализовать схему:

А=ДСЧ0()
ДСЧ=М(А)
М(А)=ДСЧ0()

-- которая концептуально даже проще (тем, что не нужно заморачиваться с "арифметикой" приращения адреса А)
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088497
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

давайте начнём с простого, какими свойствами должна обладать выходящая последовательность?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088501
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

1) должна быть основана на "слабом" датчике случайных чисел (с коротким циклом);

2) должна иметь намного больший цикл, в пределе -- вообще его не иметь.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088515
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
1) должна быть основана на "слабом" датчике случайных чисел (с коротким циклом);
Слабость ГСЧ слабо связана с его периодом.2) должна иметь намного больший цикл, в пределе -- вообще его не иметь.На конечном множестве чисел (конечная разрядная сетка) период ГСЧ будет конечным просто по определению.
Огромный период (факториалы от разрядности чисел) вообще ничего не говорит о статистических свойствах ГСЧ. Которые - гораздо гораздее. Особенно в такой фуфлообразной области, как финансовый анализ.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088537
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
На конечном множестве чисел (конечная разрядная сетка) период ГСЧ будет конечным просто по определению
-- типа, не более, чем N*ЧислоПерестановок(N)?

Обозначим для простоты последовательность, повторения которой мы ждём, -- 1, 2, ... N. Предположим, что после неё -- не позже чем через N*ЧислоПерестановок(N) вызовов ГСЧ -- мы наконец снова увидели эту ( 1, 2, ... N ) последовательность. Но появится ли после неё (после значения N) то же самое следующее значение, которые появилось -- после N -- в первый раз?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088543
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

понятно, что если однажды при некотором значении А0=ДСЧ0() -- "состояние" массива М будет в точности (во всех ячейках!) тем же самым, которое было ранее при некотором предыдущем появлении этого А0, то в этой точке ряд значений ДСЧ зациклится.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088571
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
kealon(Ruslan),

1) должна быть основана на "слабом" датчике случайных чисел (с коротким циклом);

2) должна иметь намного больший цикл, в пределе -- вообще его не иметь.
давайте ещё чуток раньше, не функционал реализации (тут как бы открыт вопрос, а возможно ли вообще такое), а именно такое свойство последовательности как распределение.

Я так понимаю распределение должно быть равномерным - т.е. на большом интервале все цифры должны быть примерно в равных количествах.

Это так или допустимы другие варианты?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088575
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
Обозначим ДСЧ0 датчик случайных чисел "мощности" 1000, который за первые 1000 последовательных вызовов выдаёт в случайном порядке числа от 0 до 999 ...

Это уже неслучайные числа, зная первые 999 можно назвать следующее
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088576
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте идею Ивана классифицируем. Конечный автомат? Бесконечный?

Я думаю что сама идея генерации длинных последовательностей на базе коротких - вполне себе летает.
Но добротность данных на выходе пострадает настолько что нельзя будет ее использовать не только
в криптографии а вообще - нигда.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088588
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
распределение должно быть равномерным - т.е. на большом интервале все цифры должны быть примерно в равных количествах.

Это так или допустимы другие варианты?
-- одномерное распределение, то есть распределение рассматриваемых по отдельности значений в ряду, возвращаемом ДСЧ()? Да, равномерное, точнее -- такое же, как и у ДСЧ0; а поскольку оно равномерное, то и от ДСЧ мы вправе требовать равномерности.
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088600
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
Да, равномерное, точнее -- такое же, как и у ДСЧ0; а поскольку оно равномерное, то и от ДСЧ мы вправе требовать равномерности.
хорошо, давайте сведём тогда вашу задачу к другой задаче.

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

задача: нужно их перемешать -> это приведёт к нужному нам результату

смотрим алгоритмы перемешивания,

например, Тасование Фишера — Йетса
Код: plaintext
1.
2.
3.
Для тасования массива a из n элементов (индексы 0..n-1):
  для всех i от n − 1 до 1 выполнить
       j ← случайное число 0 ≤ j ≤ i
       обменять местами a[j] и a[i]

опс, нужен генератор с сопоставимыми требуемому характеристиками

авторСуществует альтернативный метод — каждому элементу множества присваивается случайное число, а затем множество сортируется согласно присвоенным числам.
тут наверное нужен метод с отличной периодикой, взаимнопростой с исходной, тогда получистя генератор с периодом P1*P2
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088605
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
возьмём последовательность желаемой длины
-- это мне напоминает коллизию, которая была в Как отбирать из потока 1/1000 лучших экземпляров? :

я говорю: в трубе течёт вода, нужно делать с этой водой то-то и то-то.

мне отвечают: сколько там той воды! вырой бассейн, собери в него всю воду и делай спокойно с водой в бассейне своё "то-то и то-то".
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088661
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
kealon(Ruslan)
возьмём последовательность желаемой длины
-- это мне напоминает коллизию, которая была в Как отбирать из потока 1/1000 лучших экземпляров? :

я говорю: в трубе течёт вода, нужно делать с этой водой то-то и то-то.

мне отвечают: сколько там той воды! вырой бассейн, собери в него всю воду и делай спокойно с водой в бассейне своё "то-то и то-то".


Скорее тут другое:
стесняются спросить, откуда взялась задача?

Чему в реальной жизни эта задача соответствует,
какую реальную проблему вы решаете?
...
Рейтинг: 0 / 0
Задачка про ДСЧ с буфером
    #40088664
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

задача -- повысить "мощность" ДСЧ (как и сказано в 22354962 )
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про ДСЧ с буфером
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]