Зары и Генератор

Аватара пользователя
ONA

На Итоговый Турнир ГЗ 2020г.
Сообщения: 32

Победы

Зары и Генератор

Сообщение#1 » 03 авг 2020, 15:59

Зары и Генератор
...Выдержки из справочника - Ахундова Назима (Москва, 2007)

Те, кто играет в живую, имеют дело с зарами. В играх оn-line зары заменяет генератор случайных чисел, который имитирует выпадение цифр на зарах. И это источник бесконечных и весьма жарких споров в приватных беседах и на форумах различных сайтов.
Тема генератора – одна из самых злободневных на игровых порталах. Она вызывает бесконечное число вопросов, массу эмоций, огромное количество предложений и создает администрации игровых ресурсов серьезную головную боль. Поэтому некоторые из них такие темы либо игнорируют, либо вообще запрещают.
А тема эта была, есть и будет всегда актуальной.
Желающие могут посмотреть самостоятельно основные сведения о Для просмотра ссылок Вы должны быть авторизованы на форуме.


Вопросы, связанные с генератором условно можно разделить на 3 группы:

1. Математика. Вернее высшая математика.

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

Для практических вопросов применения генератора для виртуальной игры в нарды достаточно знания о том, что имеются глубинные пласты в понятиях:
- равномерное распределение;
- доверительный интервал;
- значимость статистических данных;
- репрезентативная выборка;
- корреляция и способы оценки статистических данных, в частности на равномерность;
и многое другое.
В этой части стоит просто доверять специалистам.
В остальном мы постараемся обойтись минимальным уровнем основных сведений из теории вероятностей, доступных любому человеку, имеющему хотя бы среднее образование.

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

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

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

75194316757891243234972189796743247312695179

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

Этап первый:
75194316757891243234972189796743247312695179 – наша последовательность.

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

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

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

Этап первый:
75194316757891243234972189796743247312695179 – наша последовательность.

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

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

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

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

Железный (аппаратный) генератор лишен этого недостатка. Он вырабатывает случайные числа в динамике. Сколько раз вы будете его запускать, столько раз будете получать новую последовательность.
Для генерации настоящих случайных чисел в железных генераторах используются реальные физические процессы. Например, ставится датчик на ножку работающего транзистора, снимается с него колебание электромагнитного поля («белый шум»), показания оцифровываются и калибруются. Получается последовательность с нормальным распределением. Другой пример: можно использовать данные наблюдений метеоспутников (метеостанций) по температуре, влажности и т.д. Такой алгоритм реализован на сайте www.random.org. «Вычислить» или «предсказать» такую последовательность невозможно.
Что важно в сравнении 2 типов генераторов:
1. Производительность программного генератора намного выше, чем «железного». Настолько, что программный генератор, например, на основе простых чисел Мерсенна, способен обслуживать одновременно десятки тысяч игроков, играющих в разные игры (карты, нарды, домино маджонг и прочее).
2. Программный генератор прост в исполнении и не требует дополнительного оборудования. А потому во много раз дешевле и практичнее железного.
3. С точки зрения обычного пользователя, (занятого «развлекательными» играми неспортивного, неазартного характера), т.е. для игры «в свое удовольствие», свойства современного программного генератора неотличимы от свойств железного.
4. Для игр, связанных с высокой значимостью результатов (спортивные турниры с призами и квалификациями, игры на ставку, призы и прочее), программный генератор оказывается уязвим, т.к. может быть «расшифрован», потому, что не обладает криптоустойчивостью. Проще говоря: опытный пользователь или хороший программист может в какой-то момент игры получить сведения о том, какие значения будет дальше вырабатывать программный генератор. Например, в нардах, игрок в какой-то момент времени сможет знать, что будет далее выпадать на зарах. Т.о. программный генератор нежелательно применять для таких игр. Железный генератор лишен этого недостатка.
5. Оба генератора являются лишь блоком в составе программы, реализующей ту или иную игру. Поэтому они оба одинаково не защищены от программного вмешательства в то, какие значения, когда и как будут выдаваться игрокам. Эта проблема не связана с типом генератора и его статистическими свойствами. Решать эту проблему, если таковая имеет значение стоит самостоятельными способами. Например, хэшированием. Очень упрощенно хэширование выглядит так. Числа вырабатываются генератором заранее, до игры. Заготовленные значения шифруются на пароль и высылаются по почте игрокам до игры. А после игры им выдается пароль. Игроки имеют возможность проверить - те ли значения выдал генератор, которые должен был. Правда хэширование порождает некую возможность информационных махинаций. Грубо говоря, при желании, администрация сайта может заранее кому-то выдавать пароли. Как решать эту проблему – предмет самостоятельного исследования и здесь мы углубляться в него не будем.

ИТОГИ:

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

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

Вернуться в «Для игры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей