|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.10.2015, 07:20 | #11 |
Пользователь
Регистрация: 02.10.2015
Сообщений: 20
|
Думаю, что разумно было бы хоть с чем-то сравнивать, что ли... Сделал визуализацию моего PBRNG рядом со стандартным "дельфовым" Random. Особых отличий, правда, пока не вижу. Тешу себя надеждой, что все-таки мои числа — истинно случайные, а System.Random генерирует псевдо-случайные числа.
Последний раз редактировалось mxustin; 08.10.2015 в 07:23. |
08.10.2015, 08:46 | #12 | |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
Одна картинка ни о чем. На то он и ГСЧ, может выдать любой узор, даже в виде картины Джаконды ( помните байку по кучу обезьян с печатными машинками, которые могут за n-е кол-во времени случайно написать "Войну и мир"?)
Надо сделать серию последовательных изображений и их проанализировать. Вот если в серии будут попадаться одинаковые участки, то ГСЧ, мягко говоря, не очень. По-настоящему случайными могут быть только квантовые процессы. Цитата:
|
|
08.10.2015, 09:01 | #13 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
А без инета какая будет картинка?
|
09.10.2015, 21:28 | #14 | ||
Пользователь
Регистрация: 02.10.2015
Сообщений: 20
|
Цитата:
Т.е., поймите правильно. Ни сколько не ставя под сомнение авторитетность того, что Вы сказали, я всего лишь хочу более точно понять, что Вы имели ввиду. На сколько я понимаю, псевдослучайные числа — это такие числа, которые генерируются некоторым полностью детерминированным алгоритмом, то есть, потенциально могут быть воспроизведены в любой момент с полной точностью. Если же в основе генератора лежит некий физический процесс, который заранее предсказать невозможно, то даже несмотря на то, что алгоритм все же детерминирован, числа, сгенерированные им, будут случайными. Разве нет? Другое дело, что есть еще такое понятие, как распределение. Человек, например, — это хороший источник случайных чисел, но, надо полагать, что числа, «генерируемые» человеком будут очень плохо распределены. (Каких-то будет всегда больше, а других — меньше.) Я, вот, например, стараюсь свои пароли делать «как можно более случайными» (а «генерирую» их путем «хаотичного тыканья» по клавиатуре). Однако, на деле, когда я посмотрел список своих паролей, то увидел в нем, что некоторые последовательности встречаются явно чаще других. (Собственно, после этого я и решил запилить генератор случайных чисел.) Так вот, если по-Вашему, то получается, что из всех возможных аппаратных генераторов случайны чисел, описанных в Википедии, по-настоящему случайными являются только квантовые? Про кучу обезьян, конечно помню да. На сколько я знаю, даже есть некий «monkey-test» для псевдо-случайных последовательностей. Когда-нибудь, надеюсь, доберусь до того, чтобы разобраться с ним. Цитата:
(Сделаю ремарку, что я подразумеваю, что в моем случае, числа, которые генерируются с использованием энтропии, полученной от пинг-а — вроде как, истинно случайные, ибо: а) я никак не могу влиять на время пинга, б) заранее невозможно предсказать, каким именно будет время пинга). Со своей стороны хочу сделать апдэйт. Я построил частотный тест (пока что провел 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. |
||
09.10.2015, 23:07 | #15 | |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
Ну в общем да. Если мы говорим о *действительно* случайных числах — то только квантовые аппаратные генераторы, там жестко подперто, что за рандомность отвечает вселенная в лице квантовой механики.
Цитата:
Тогда чем хуже использование энтропии, полученной от кол-ва секунд, прошедшего с включения компьютера? Тоже число случайное. Но диапазон таких чисел конечный и известен. Отсюда вопрос - если мне нужно сгенерировать 1000000 случайных чисел подряд, я должен для каждого числа получить свой пинг, или один раз на все 1000000 чисел? Любой ответ на мой вопрос вскрывает тот или иной недостаток вашего метода. |
|
10.10.2015, 00:32 | #16 | |
Пользователь
Регистрация: 02.10.2015
Сообщений: 20
|
Цитата:
Вас понял. То есть, грубо говоря, если для получения 1 млн. случайных чисел пинговать миллион раз — то вскрывается недостаток, который заключается в крайне невысокой скорости получения СЧ (при таких запросах, как миллион (или более) СЧ, получается, что время пинга (которое, как правило, исчисляется несколькими миллисекундами, а иногда — десятками миллисекунд) оказывается «слабым звеном»). Если же «пингануть» один раз, и на основе этого сгенерировать миллион числе (как у меня и делается), — то получается, что вскрывается другой недостаток, а именно: слишком малое количество изначальной энтропии. Верно? |
|
10.10.2015, 06:21 | #17 |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
Ваши рассуждения абсолютно совпадают с моими.
|
10.10.2015, 11:21 | #18 |
Пользователь
Регистрация: 02.10.2015
Сообщений: 20
|
Сделал «масштабную» шумовую визуализацию:
|
10.10.2015, 11:23 | #19 |
Пользователь
Регистрация: 02.10.2015
Сообщений: 20
|
|
10.10.2015, 16:38 | #20 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
RandSeed инициализирован своим способом, а дальше обычный Random? Это ни чем не отличается от делфийского способа
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
‘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 |