Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Технология добывания случайных чисел.




 

Здесь, на самом деле, ключ к пониманию проблем, связанных с генератором.

Есть два принципиально разных способа получения случайных чисел: программный и аппаратный (железный).

 

Программный генератор, на самом деле случайных чисел не дает. Он дает псевдослучайные числа.

Чтобы было понятнее, давайте упростим все. Представим себе простенький, слабенький программный генератор). Вот, что он вычисляет (например):

Все! Больше он ничего не делает. Каждый раз, когда он начинает работать, генератор выдает ЭТУ САМУЮ последовательность. Никогда ничего нового!

Ни один программный генератор вообще ПРИНЦИПИАЛЬНО не умет создавать случайную величину. Он умеет только делать ОДНУ какую-то последовательность цифр. Случайным является каждый раз только то, с какого места начинается использование этой последовательности. Для этого используются единичные случайные числа, например, показания системного таймера в микросекундах.

Итак есть раз и навсегда вычисленная данной программой последовательность и некая позиция, начиная с которой эта последовательность используется.

Например:

 

Этап первый:

75194316757891243234972189796743247312695179 – наша последовательность.

Этап второй:

75194316757891243234972189796743247312695179 – установлено место начала использования последовательности.

Этап третий:

97218979674324731269517975194316757891243234 – наша последовательность (далее она будет повторяться и повторяться).

Другой раз изменится начальная точка последовательности.

Например:

 

Этап первый:

75194316757891243234972189796743247312695179 – наша последовательность.

Этап второй:

75194316757891243234972189796743247312695179 – установлено место начала использования последовательности.

Этап третий:

57891243234972189796743247312695179751943167 – этонаша последовательность (далее она будет повторяться и повторяться).

 

Однако, надо понимать, что хорошие программные генераторы дают последовательность (которая одна-единственная) очень длинную. И чем длиннее, тем ближе генератор к случайному распределению. Наиболее распространенный на сегодня тип генератора использует простые числа Мерсенна. Его последовательность (период) составляет 219937−1. Такая последовательность с практической точки зрения неотличима от бесконечно длиной последовательности.

 

И все же эта последовательность статична, т.е. опять же всегда одна и та же. И если удастся определить, с какого именно места начато использование последовательности, то Вы сможете точно знать, какие цифры будет дальше выдавать генератор. Поэтому такой генератор не годится для криптографических целей.

 

Железный (аппаратный) генератор лишен этого недостатка. Он вырабатывает случайные числа в динамике. Сколько раз вы будете его запускать, столько раз будете получать новую последовательность.

Для генерации настоящих случайных чисел в железных генераторах используются реальные физические процессы. Например, ставится датчик на ножку работающего транзистора, снимается с него колебание электромагнитного поля («белый шум»), показания оцифровываются и калибруются. Получается последовательность с нормальным распределением. Другой пример: можно использовать данные наблюдений метеоспутников (метеостанций) по температуре, влажности и т.д. Такой алгоритм реализован на сайте www.random.org. «Вычислить» или «предсказать» такую последовательность невозможно.

Что важно в сравнении 2 типов генераторов:

1. Производительность программного генератора намного выше, чем «железного». Настолько, что программный генератор, например, на основе простых чисел Мерсенна, способен обслуживать одновременно десятки тысяч игроков, играющих в разные игры (карты, нарды, домино маджонг и прочее).

2. Программный генератор прост в исполнении и не требует дополнительного оборудования. А потому во много раз дешевле и практичнее железного.

3. С точки зрения обычного пользователя, (занятого «развлекательными» играми неспортивного, неазартного характера), т.е. для игры «в свое удовольствие», свойства современного программного генератора неотличимы от свойств железного.

4. Для игр, связанных с высокой значимостью результатов (спортивные турниры с призами и квалификациями, игры на ставку, призы и прочее), программный генератор оказывается уязвим, т.к. может быть «расшифрован», потому, что не обладает криптоустойчивостью. Проще говоря: опытный пользователь или хороший программист может в какой-то момент игры получить сведения о том, какие значения будет дальше вырабатывать программный генератор. Например, в нардах, игрок в какой-то момент времени сможет знать, что будет далее выпадать на зарах. Т.о. программный генератор нежелательно применять для таких игр. Железный генератор лишен этого недостатка.

5. Оба генератора являются лишь блоком в составе программы, реализующей ту или иную игру. Поэтому они оба одинаково не защищены от программного вмешательства в то, какие значения, когда и как будут выдаваться игрокам. Эта проблема не связана с типом генератора и его статистическими свойствами. Решать эту проблему, если таковая имеет значение стоит самостоятельными способами. Например, хэшированием. Очень упрощенно хэширование выглядит так. Числа вырабатываются генератором заранее, до игры. Заготовленные значения шифруются на пароль и высылаются по почте игрокам до игры. А после игры им выдается пароль. Игроки имеют возможность проверить - те ли значения выдал генератор, которые должен был. Правда хэширование порождает некую возможность информационных махинаций. Грубо говоря, при желании, администрация сайта может заранее кому-то выдавать пароли. Как решать эту проблему – предмет самостоятельного исследования и здесь мы углубляться в него не будем.

 

ИТОГИ:

 

1. Для массовых развлекательных игр более целесообразно использование программного генератора с большим периодом. Пример – метод простых чисел Мерсенна.

 

2. Для турниров с призами, для игры на деньги, для престижных соревнований на звания и ранги лучше использовать железный генератор и современные способы хэширования.

 


 




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 190; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.