|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||||||||||||||||||||||||||||||||||
Генератор псевдо-случайных чисел, как хэш-функция28.05.2017, 21:29. Показов 13245. Ответов 50
Анализируя генератор псевдослучайных чисел
Я пришел к выводу, что (Учитывая что RAND_MAX = 32767) придумал сам, но может где то подобное писалось (просто я не искал)
Такое же число NewT может появиться только через ~ 48 дней Оно способно давать псевдослучайное число каждую ~ миллисекунду Такое же случайное число может получиться через ~32,768 секунд чем обычное
способно давать псевдослучайное число - каждую секунду Такое же случайное число может получиться через ~9 часов 6 минут
Кликните здесь для просмотра всего текста
<127> Count RAND(min, max) = [65536, 65536]
<255> Count RAND(min, max) = [131072, 131072] Press ENTER to continue... Получается что в некоторых точках функция равномерная (т.е. равномерно распределяется значения) что есть хорошо) в конечном результате, как видно получается R[i] = 131072 (каждое) Если кто уже делал подобное изучение генерации псевдо-случайных чисел, скинуть где прочитать) (читал, но что то подобных не находил) Добавлено через 6 минут Можно конечно использовать:
такое же равномерное распределения как и (сдвиг влево на 10)/(маска 0x03ff) Хотя, для каждого конкретного случая, лучше подбирать свой способ Добавлено через 9 минут Например если встряхивается только один раз, то логичнее писать:
Добавлено через 1 час 11 минут Теоретическое время выполнения вот такой проги (9 дней) нужно как нить ускорить хочу увидеть когда наблюдается равное распределение
Ускорил алгоритм:
Получается что равномерно распределить значения можно только в двух диапазонах: [0x00000000..0x7fffffff] и [0x00000000..0xffffffff] и и эти диапазоны он трансформирует в [0x0000..0x7fff] Добавлено через 3 минуты Получается подобным методом можно шифровать данные! Правда размер файла итоговый будет в два раза больше
0
|
||||||||||||||||||||||||||||||||||||||
| 28.05.2017, 21:29 | |
|
Ответы с готовыми решениями:
50
Генератор псевдо случайных чисел повторяет значения Псевдо генератор случаных чисел Как использовать генератор случайных чисел? |
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
||||
| 28.05.2017, 21:55 | ||||
|
Не по теме: Ладно, я невнимательно прочитал сообщение. Добавлено через 2 минуты Можешь со своим генератором пробежаться вот по этим тестам. Добавлено через 5 минут srand вызывается только единожды при инициализации генератора случайных чисел, а дальше вызывается функция rand сколько угодно раз. Т.е. вот такое: Добавлено через 3 минуты
1
|
||||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||||||||||||||||||||||
| 29.05.2017, 01:42 [ТС] | ||||||||||||||||||||||||||
Хотя я не проверял, если k сдвинуть на единицу Добавлено через 6 минут
т.е. внутри выполняется
Добавлено через 2 минуты
Добавлено через 41 минуту чисел там 4*194*304 (2^22) 2^22 / 60 секунд / 60 минут / 24 часа ~ 48,545 дней возвращает число в миллисекундах (сколько проработала программа), следовательно каждую миллисекунду там (относительно) новое значение
0
|
||||||||||||||||||||||||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
||
| 29.05.2017, 02:23 | ||
|
srand просто инициализирует начальное значение этого генератора, вызывая srand каждый раз перед вызовом rand ты только портишь свойства этого генератора. Я рад, что выдаваемые числа близки к равномерному распределению, но... на сколько они случайны?
0
|
||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|||||||||||||||||||
| 29.05.2017, 10:49 [ТС] | |||||||||||||||||||
|
Вот как этот выглядит у меня в VS2010
чем быстрее проц, тем ближе будут располагаться семени чем слабее проц, тем дальше будут располагаться семени И можно ли это назвать портить алгоритм? Когда например там, известно последовательность генерируемая тремя последовательными rand() То у меня все зависит уже от железа Можно ещё какую-нить зависимость прикрутить например считывать какой-нить файл (попросить положить рядом с программой файл, например EXE или BIN) Как мне кажется, таким образом можно повысить случайность значений
0
|
|||||||||||||||||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
||||
| 29.05.2017, 11:10 | ||||
|
eXPonent, эти все выкладки ничего не стоят.
Добавлено через 3 минуты eXPonent, кстати, а почему ты зациклился на rand? В C++ есть замечатльный заголовочный файл random - там целая толпа различных алгоритмов для генерации случайных чисел, возможно даже будет настоящий случайный, а не псевдослучайный.
1
|
||||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||||
| 29.05.2017, 11:29 [ТС] | ||||||||
|
иначе, почему до сих пор (спустя уже как более 40 как изобрели первые ПСП) актуальны машины, для генерации случайных последовательностей и стоят они бешенные деньги Добавлено через 4 минуты Генерация псевдослучайных чисел Добавлено через 3 минуты злоумышленник не только должен знать примерное время но так же когда и сколько раз происходило встряхивание значений иначе вместо 1000 комбинации ему придется перебрать: 1000^(сколько секунд проработала прога)
0
|
||||||||
|
93 / 69 / 22
Регистрация: 17.10.2011
Сообщений: 235
|
|
| 29.05.2017, 11:35 | |
Сообщение было отмечено eXPonent как решение
Решение
чуваки загляните сюда, там куча прикольных генераторов http://en.cppreference.com/w/cpp/numeric/random
0
|
|
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
||||
| 29.05.2017, 11:46 | ||||
|
0
|
||||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|||||
| 29.05.2017, 11:49 [ТС] | |||||
|
Я лишь выдвинул гипотезу, что:
0
|
|||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
| 29.05.2017, 11:52 | |
|
eXPonent;10489498"]но так же когда и сколько раз происходило встряхивание значений[/quote]
Эмм, встряхиванием ты называешь вызов srand? Сам посмотри на свою формулу, вызов time = зависимость от текущего времени. clock() & 1023 десять бит зависят от времени работы программы. Т.е. если я знаю время, то мне нужно перебрать только оставшиеся 10 бит, т.е. примерно 1000 значений.
0
|
|
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||||||||||||||||||
| 29.05.2017, 11:57 [ТС] | ||||||||||||||||||||||
|
Без доказательств, но если везде и вся рекомендуют использовать:
только если дизамблезировать код А в стандартных программах, можно предположить что:
этому ж везде учат Добавлено через 15 секунд только если дизамблезировать код А в стандартных программах, можно предположить что:
этому ж везде учат
0
|
||||||||||||||||||||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|||
| 29.05.2017, 12:08 | |||
|
Недавно мне довелось поучаствовать в одной студенческой конференции. Там группу ребят должна была выступать со своей новой криптосистемой на замену RSA. Их не допустили до выступления по одной простой причине... После подачи доклада, один из интервьюеров в отзыве написал простенькой математическое доказательство того, почему их система нифига не криптостойкая. Изучай основы, а уже потом приступай к самостоятельной разработке чего-либо. Добавлено через 4 минуты В криптографии уже давно отказались от алгоритмов, которые основаны только на том, что никто не знает, как они работают. Ибо рано или поздно кто-нибудь да узнает.
0
|
|||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||
| 29.05.2017, 12:20 [ТС] | ||||||
|
Я лишь своими выкладками показал что функция rand() равномерная, на определенных 2-х промежутках и никаких более (так как можно перебрать все остальные промежутки, моим кодом и убедится) Добавлено через 3 минуты или же чем плохо задействование в рандомизации семени миллисекунд
0
|
||||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|||||
| 29.05.2017, 12:30 | |||||
|
Добавлено через 2 минуты Я вот про такое в цикле:
0
|
|||||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|||||
| 29.05.2017, 12:43 [ТС] | |||||
|
Дает более равномерное распределение на промежутке [0x00000000..0xffffffff] чем обычное использование: time(NULL) Добавлено через 1 минуту Что бы узнать какие значения, при каком установочном семени появляются Добавлено через 6 минут Я только в этой статье: Генерация случайных чисел в С++ Нашел вот такое:
0
|
|||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|||
| 29.05.2017, 12:48 | |||
|
0
|
|||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||
| 29.05.2017, 12:49 [ТС] | ||
|
изменяя i можно увидеть как сдвигается равномерный промежуток, но при этом их количество обязательно два размер постоянный и количество элементов внутри, то же постоянно
0
|
||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|||
| 29.05.2017, 12:53 | |||
time(NULL) ^ pid, где pid - идентификатор текущего процесса.
0
|
|||
|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
|||||
| 29.05.2017, 12:59 [ТС] | |||||
|
т.е. достаточно перебрать (UINT_MAX + 1) семян когда и так известно, что он устанавливает сам семя, которое зависит от генерируемого числа, т.е. при одинаковом начальном семени последовательный вызов rand() rand() rand() будет давать одну и ту же последовательность вне зависимости, где располагаются эти rand() в программе Добавлено через 1 минуту следовательно и случайность генерации rand() Добавлено через 1 минуту только вот pid лежит ли в каких то пределах? Добавлено через 53 секунды И насколько у него случайный так сказать выпадение числа, при повторном запуске программы
0
|
|||||
| 29.05.2017, 12:59 | |
|
Помогаю со студенческими работами здесь
20
Как сделать генератор случайных чисел?
Как создать генератор случайных чисел
Как создать генератор случайных чисел ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|