Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2015, 07:20   #11
mxustin
Пользователь
 
Аватар для mxustin
 
Регистрация: 02.10.2015
Сообщений: 20
По умолчанию

Думаю, что разумно было бы хоть с чем-то сравнивать, что ли... Сделал визуализацию моего PBRNG рядом со стандартным "дельфовым" Random. Особых отличий, правда, пока не вижу. Тешу себя надеждой, что все-таки мои числа — истинно случайные, а System.Random генерирует псевдо-случайные числа.


Последний раз редактировалось mxustin; 08.10.2015 в 07:23.
mxustin вне форума Ответить с цитированием
Старый 08.10.2015, 08:46   #12
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Одна картинка ни о чем. На то он и ГСЧ, может выдать любой узор, даже в виде картины Джаконды ( помните байку по кучу обезьян с печатными машинками, которые могут за n-е кол-во времени случайно написать "Войну и мир"?)
Надо сделать серию последовательных изображений и их проанализировать. Вот если в серии будут попадаться одинаковые участки, то ГСЧ, мягко говоря, не очень.

Цитата:
Сообщение от mxustin Посмотреть сообщение
Тешу себя надеждой, что все-таки мои числа — истинно случайные
По-настоящему случайными могут быть только квантовые процессы.
Цитата:
Ученые продолжали работу еще в течение трех месяцев, занимаясь генерацией потока случайных чисел. В результате удалось получить последовательность из 42 подлинно случайных чисел.
Вам всё же удалось добиться большего?
kvitaliy вне форума Ответить с цитированием
Старый 08.10.2015, 09:01   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А без инета какая будет картинка?
p51x вне форума Ответить с цитированием
Старый 09.10.2015, 21:28   #14
mxustin
Пользователь
 
Аватар для mxustin
 
Регистрация: 02.10.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
Одна картинка ни о чем. На то он и ГСЧ, может выдать любой узор, даже в виде картины Джаконды ( помните байку по кучу обезьян с печатными машинками, которые могут за n-е кол-во времени случайно написать "Войну и мир"?)
Надо сделать серию последовательных изображений и их проанализировать. Вот если в серии будут попадаться одинаковые участки, то ГСЧ, мягко говоря, не очень.

По-настоящему случайными могут быть только квантовые процессы.

Вам всё же удалось добиться большего?
Думаю, что, наверное нет )))) раз там ученые месяцами бьются и лишь 42 случайных числа получили за это время. Но, я хотел бы попросить Вас, если не трудно, пояснить немного свою мысль. Вероятно Вы (или те ученые) под «подлинно случайными» числами подразумевают что-то особенное...

Т.е., поймите правильно. Ни сколько не ставя под сомнение авторитетность того, что Вы сказали, я всего лишь хочу более точно понять, что Вы имели ввиду.

На сколько я понимаю, псевдослучайные числа — это такие числа, которые генерируются некоторым полностью детерминированным алгоритмом, то есть, потенциально могут быть воспроизведены в любой момент с полной точностью. Если же в основе генератора лежит некий физический процесс, который заранее предсказать невозможно, то даже несмотря на то, что алгоритм все же детерминирован, числа, сгенерированные им, будут случайными. Разве нет?

Другое дело, что есть еще такое понятие, как распределение. Человек, например, — это хороший источник случайных чисел, но, надо полагать, что числа, «генерируемые» человеком будут очень плохо распределены. (Каких-то будет всегда больше, а других — меньше.) Я, вот, например, стараюсь свои пароли делать «как можно более случайными» (а «генерирую» их путем «хаотичного тыканья» по клавиатуре). Однако, на деле, когда я посмотрел список своих паролей, то увидел в нем, что некоторые последовательности встречаются явно чаще других. (Собственно, после этого я и решил запилить генератор случайных чисел.)

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

Про кучу обезьян, конечно помню да. На сколько я знаю, даже есть некий «monkey-test» для псевдо-случайных последовательностей. Когда-нибудь, надеюсь, доберусь до того, чтобы разобраться с ним.



Цитата:
А без инета какая будет картинка?
Картинка будет аналогичная, так как при отсутствии интернета мой ГСЧ все-таки инициализируется, но уже путем использования системного Random. То есть, в этом случае, числа будут уже псевдо-случайными.

(Сделаю ремарку, что я подразумеваю, что в моем случае, числа, которые генерируются с использованием энтропии, полученной от пинг-а — вроде как, истинно случайные, ибо: а) я никак не могу влиять на время пинга, б) заранее невозможно предсказать, каким именно будет время пинга).

Со своей стороны хочу сделать апдэйт.

Я построил частотный тест (пока что провел 100 тыс. испытаний). Сравнивал мой ГСЧ и System.Random (Delphi). Вот, что получилось:



На иллюстрации сверху — результаты работы моего ГСЧ (PBRNG), а снизу - результаты работы System.Random (Delphi).

Первый столбец — это цифра (тест был рассчитан на выпадение цифр от 0 до 9).
Второй столбец — это количество выпадений данной цифры (в абсолютном выражении).
Третий столбец — это процентное отношение количества выпадений определенной цифры к общему количеству испытаний (внизу можно видеть: Total: 100016).
Четвертый столбец — это пометка максимального и минимального числа «выпадений».
Пятый столбец — это процентная разница между количеством выпадений данной цифры и количеством выпадений той цифры, которая выпала максимальное число раз.

Можно видеть, что в случае PBRNG на 100000 испытаний получается, что разница между максимумом и минимумом немного меньше, чем в случае System.Random. Правда, я должен сознаться, что бывало (на протяжении этих 100 тыс. испытаний) и наоборот.

У PBRNG за эти 100 тыс. испытаний чаще всего выпадала четверка (ее количество — 10235, что составляет 10.233% от 100016). Реже всех выпадала тройка (она выпала «всего лишь» 9754 раза, что составляет 9.752% от 100016). Таким образом, разница между «самой популярной» и «наименее популярной» цифрами составляет 0.481%.

У System.Random эта разница составляет 0.532%.


P.S. Что я еще понял, — так это то, что картинки надо разных размеров рисовать. Где на одном размере не будет заметен частотный узор, то на другом размере — будет.

Последний раз редактировалось mxustin; 09.10.2015 в 22:26.
mxustin вне форума Ответить с цитированием
Старый 09.10.2015, 23:07   #15
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Цитата:
Сообщение от mxustin Посмотреть сообщение
под «подлинно случайными» числами подразумевают что-то особенное...
Ну в общем да. Если мы говорим о *действительно* случайных числах — то только квантовые аппаратные генераторы, там жестко подперто, что за рандомность отвечает вселенная в лице квантовой механики.

Цитата:
(Сделаю ремарку, что я подразумеваю, что в моем случае, числа, которые генерируются с использованием энтропии, полученной от пинг-а — вроде как, истинно случайные, ибо: а) я никак не могу влиять на время пинга, б) заранее невозможно предсказать, каким именно будет время пинга).
Предсказать невозможно, но практический диапазон значений невелик.
Тогда чем хуже использование энтропии, полученной от кол-ва секунд, прошедшего с включения компьютера? Тоже число случайное.
Но диапазон таких чисел конечный и известен.
Отсюда вопрос - если мне нужно сгенерировать 1000000 случайных чисел подряд, я должен для каждого числа получить свой пинг, или один раз на все 1000000 чисел?
Любой ответ на мой вопрос вскрывает тот или иной недостаток вашего метода.
kvitaliy вне форума Ответить с цитированием
Старый 10.10.2015, 00:32   #16
mxustin
Пользователь
 
Аватар для mxustin
 
Регистрация: 02.10.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
Ну в общем да. Если мы говорим о *действительно* случайных числах — то только квантовые аппаратные генераторы, там жестко подперто, что за рандомность отвечает вселенная в лице квантовой механики.


Предсказать невозможно, но практический диапазон значений невелик.
Тогда чем хуже использование энтропии, полученной от кол-ва секунд, прошедшего с включения компьютера? Тоже число случайное.
Но диапазон таких чисел конечный и известен.
Отсюда вопрос - если мне нужно сгенерировать 1000000 случайных чисел подряд, я должен для каждого числа получить свой пинг, или один раз на все 1000000 чисел?
Любой ответ на мой вопрос вскрывает тот или иной недостаток вашего метода.

Вас понял. То есть, грубо говоря, если для получения 1 млн. случайных чисел пинговать миллион раз — то вскрывается недостаток, который заключается в крайне невысокой скорости получения СЧ (при таких запросах, как миллион (или более) СЧ, получается, что время пинга (которое, как правило, исчисляется несколькими миллисекундами, а иногда — десятками миллисекунд) оказывается «слабым звеном»). Если же «пингануть» один раз, и на основе этого сгенерировать миллион числе (как у меня и делается), — то получается, что вскрывается другой недостаток, а именно: слишком малое количество изначальной энтропии. Верно?
mxustin вне форума Ответить с цитированием
Старый 10.10.2015, 06:21   #17
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Ваши рассуждения абсолютно совпадают с моими.
kvitaliy вне форума Ответить с цитированием
Старый 10.10.2015, 11:21   #18
mxustin
Пользователь
 
Аватар для mxustin
 
Регистрация: 02.10.2015
Сообщений: 20
По умолчанию

Сделал «масштабную» шумовую визуализацию:
mxustin вне форума Ответить с цитированием
Старый 10.10.2015, 11:23   #19
mxustin
Пользователь
 
Аватар для mxustin
 
Регистрация: 02.10.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
Ваши рассуждения абсолютно совпадают с моими.
Принято. Нужно будет поработать над описанием моего ГСЧ, чтобы избежать слишком громких формулировок.
mxustin вне форума Ответить с цитированием
Старый 10.10.2015, 16:38   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

RandSeed инициализирован своим способом, а дальше обычный Random? Это ни чем не отличается от делфийского способа
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
‘Search-based GUI’ Glen Свободное общение 14 16.11.2011 11:40
Побитовые операторы (number && + number | 0 || 0) Викдон JavaScript, Ajax 0 05.10.2011 20:34
random number<<is the code true? Alexander1205 Общие вопросы C/C++ 1 26.01.2011 00:11
GENERATOR firebird shurik_klgd БД в Delphi 4 29.09.2010 20:05
IPv4 Generator ergil Софт 1 19.07.2010 16:06