Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Ваши программы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2015, 01:07
mxustin mxustin вне форума
Прохожий
 
Регистрация: 12.09.2015
Адрес: http://pbrng.16mb.com/home/
Сообщения: 18
Версия Delphi: RAD Studio XE8
Репутация: 10
Лампочка Ping based random number generator

Реализован генератор случайных чисел, использующий Ping (измерение времени отклика определенного хоста в сети Интернет) в качестве источника энтропии. Итогом разработки стали функции PRandomize() (обеспечивает инициализацию ГСЧ) и PRandom (обеспечивает, собственно, генерацию случайного числа). Функция PRandom имеет две перегружаемые реализации: без параметров (возвращает случайное число типа Extended в интервале от 0 до 1 включительно) и с целочисленными параметрами (минимум и максимум типа Int64), которая возвращает целое (типа Int64) случайное число в указанном диапазоне. Описание, исходные коды и демо доступны на сайте pbrng.16mb.com.

Критика, которая высказывалась ранее на данном форуме по поводу этой идеи, по возможности учтена и алгоритм построен так, чтобы в минимальной степени зависеть от внешних факторов. Частотный тест случайных чисел, полученных таким образом, показывает хорошее (равномерное) распределение (другие виды тестов пока не проводились).
Ответить с цитированием
  #2  
Старый 02.10.2015, 01:44
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Какая-то изначально неверная идея. Почему бы не использовать тогда погодные данные?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 02.10.2015, 02:21
mxustin mxustin вне форума
Прохожий
 
Регистрация: 12.09.2015
Адрес: http://pbrng.16mb.com/home/
Сообщения: 18
Версия Delphi: RAD Studio XE8
Репутация: 10
По умолчанию

ну, я не могу ответить на такой вопрос. Использовать-то можно очень много чего (начиная от квантовых флуктуаций или космического излучения, и заканчивая «бульками» в аквариуме или «лавовыми лампами»). Температура чего-нибудь, скорость вращения, и все такое, конечно, тоже в этом списке. Можно и погодные данные, конечно, использовать. Мне, вот, пинг «приглянулся» для этих целей. Почему — не могу сказать. А почему бы и нет?
Ответить с цитированием
  #4  
Старый 02.10.2015, 08:04
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

при отвалившемся интернет или вообще при его отсутствии смысла нет...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 02.10.2015, 09:58
mxustin mxustin вне форума
Прохожий
 
Регистрация: 12.09.2015
Адрес: http://pbrng.16mb.com/home/
Сообщения: 18
Версия Delphi: RAD Studio XE8
Репутация: 10
По умолчанию

В описании проекта об этом честно говорится.

Варианты такие:

1) интернет изначально был (и программа успешно инициализировалась), а потом отвалился — приведет к тому, что будут все равно генерироваться истинно случайные числа (только "переинициализироваться" не удастся), так как собственно для генерации СЧ программе интернет не нужен (только для инициализации);

2) интернета изначально не было — приведет к тому, что будут генерироваться только псевдо-случайные числа, но с более ровным распределением, чем у стандартной дельфийской функции Random.

Тут надо еще сделать такую ремарку, что в отношении этого проекта главной задачей для меня лично было — получить практический навык описания и документирования проекта (это — мой первый опыт).
Ответить с цитированием
  #6  
Старый 09.10.2015, 21:33
mxustin mxustin вне форума
Прохожий
 
Регистрация: 12.09.2015
Адрес: http://pbrng.16mb.com/home/
Сообщения: 18
Версия Delphi: RAD Studio XE8
Репутация: 10
По умолчанию

Маленький апдэйт. Я построил частотный тест (пока что провел 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%.
__________________
Разрабатываю генератор случайных чисел на основе пинга (информация — на сайте http://pbrng.16mb.com/)

Последний раз редактировалось mxustin, 09.10.2015 в 21:37.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter