|
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
|
||||||||||||||||||||||||||||||||||||||
Генератор псевдо-случайных чисел, как хэш-функция28.05.2017, 21:29. Показов 13321. Ответов 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
Как сделать генератор случайных чисел?
Как создать генератор случайных чисел
Как создать генератор случайных чисел ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|