Псевдо-генератор случайных чисел не обеспечивает достаточную случайность
раздач для игры в покер онлайн. Именно поэтому PokerStars не использует
такой ГСЧ в своих играх.
Из этого письма Вы сможете узнать все подробности и технические особенности
процесса раздач, которые применяются в перетасовке и непосредственно в самой
раздаче карт.
Метод, который мы применяем для раздачи карт, подробно описан на нашем
веб-сайте:
http://academypoker.ru/forum/out.php?link=http://www.pokerstars.com/ru/poker/room ... /security/
Мы предлагаем ещё раз изучить информацию, предоставленную в разделе
"Основные сведения о перетасовывании".
Мы используем 249 случайных бит каждого из двух источников энтропии,
получаемые от пользователей данные и тепловые помехи, для получения
равномерного и статистически непредсказуемого распределения.
Т.е. при тасовке карт мы берем 249 абсолютно случайных битов термического
источника и 249 абсолютно случайных битов от движения мышки (оба эти
источника совершенно непредсказуемы).
Мы используем алгоритм шифрования данных SHA-1 для объединения случайных
величин, полученных от обоих источников, для обеспечения дополнительной
безопасности.
Таким образом, мы используем математическую формулу для совмещения этих двух
источников 249 битов для получения общего числа 498. Так как вся информация
передаётся в битах, конечный результат выглядит примерно так:
010101111001011001110110100010001010111101010101011010101010101011...
И так далее. На самом деле их всего 498 бита, а начальные числа здесь
предоставлены просто для примера.
Далее на этой же странице говорится:
Для преобразования потока случайных битов в случайные числа из заданного
промежутка и без отклонений, мы используем простой и надежный алгоритм. К
примеру, если нам нужно случайное число из промежутка от 0 до 25, то:
* мы берем 5 случайных битов и преобразуем их в случайное число от 0 до 31;
* если это число больше 25, мы берем другие 5 битов и повторяем процесс.
Последний этап - это сама раздача.
Для выполнения фактической перетасовки карт мы используем другой простой и
надежный алгоритм:
* сначала мы вытягиваем случайную карту из исходной колоды (1 из 52) и
помещаем ее в новую колоду - теперь исходная колода содержит 51 карту, а
новая колода содержит 1 карту;
* затем мы вытягиваем вторую случайную карту из исходной колоды (1 из 51) и
помещаем ее наверх новой колоды - теперь исходная колода содержит 50 карт, а
новая колода содержит 2 карты;
* мы повторяем данный процесс до тех пор, пока все карты из оригинальной
колоды не переместятся в новую колоду.
Как это работает? Во-первых, берутся числа от 0 до 51, для того чтобы
выбрать одну из 52 карт. Для того чтобы произвести эти действия нужны 6
битов. Выбираются 6 битов из общего числа раздачи, и более эти числа нами не
используются:
010101111001011001110110100010001010111101010101011010101010101011...
010101
(используем эти)
----------111001011001110110100010001010111101010101011010101010101011...
(числа, которые остались)
Если это число достигает число от 52 до 63, то происходит сброс так как
число больше допустимого максимума. Если число стоит в промежутке от 0 до
51, то карта используется. В этом случае бит 6 чисел 010101 равен карте
"21", то есть система выбирает 21-ую карту.
Далее раздача продвигается по битам. Допустимый промежуток от 0 до 50 (51
карта в оставшейся колоде).
Следующий бит - 111001, равен 57.
------111001011001110110100010001010111101010101011010101010101011...
------111001
(используются)
----------------011001110110100010001010111101010101011010101010101011...
(эти биты остаются)
Так как число 57 является слишком большим, берётся следующие 6 битов из
остатка - 011001, или 25. Далее процесс продвигается по этой же схеме.
Каждый раз, когда количество карт уменьшается, номер необходимых нам битов
также уменьшается.
Далее мы привели Вам таблицу, которая указывает на необходимое количество
битов для произведения раздачи:
52 = необходимо 6 битов 35 = необходимо 6 битов 18 = необходимо 5 битов
51 = необходимо 6 битов 34 = необходимо 6 битов 17 = необходимо 5 битов
50 = необходимо 6 битов 33 = необходимо 6 битов 16 = необходимы 4 бита
49 = необходимо 6 битов 32 = необходимо 5 битов 15 = необходимы 4 бита
48 = необходимо 6 битов 31 = необходимо 5 битов 14 = необходимы 4 бита
47 = необходимо 6 битов 30 = необходимо 5 битов 13 = необходимы 4 бита
46 = необходимо 6 битов 29 = необходимо 5 битов 12 = необходимы 4 бита
45 = необходимо 6 битов 28 = необходимо 5 битов 11 = необходимы 4 бита
44 = необходимо 6 битов 27 = необходимо 5 битов 10 = необходимы 4 бита
43 = необходимо 6 битов 26 = необходимо 5 битов 9 = необходимы 4 бита
42 = необходимо 6 битов 25 = необходимо 5 битов 8 = необходимы 3 бита
41 = необходимо 6 битов 24 = необходимо 5 битов 7 = необходимы 3 бита
40 = необходимо 6 битов 23 = необходимо 5 битов 6 = необходимо 3 бита
39 = необходимо 6 битов 22 = необходимо 5 битов 5 = необходимо 3 бита
38 = необходимо 6 битов 21 = необходимо 5 битов 4 = необходимо 2 бита
37 = необходимо 6 битов 20 = необходимо 5 битов 3 = необходимо 2 бита
36 = необходимо 6 битов 19 = необходимо 5 битов 2 = необходимо 1 бит
1 = 0 битов
Если Вы сложите все биты, то Вы получите число 249, которое создаётся при
совмещении 2 совершенно случайных источников.
В псевдо-случайных генераторах чисел используется математическая прогрессия.
Если Вы знаете исходное число, и Вам известна формула прогрессии, Вы сможете
вычислить и результат.
Наш метод работает по другому. В PokerStars ни один из шагов не делается при
помощи псевдо-методов, то есть вычисление результатов является невозможным.
Следующее число не зависит от предыдущего, и нет возможности применить
математическую формулу. При выборе каждой карты "колода заново
перетасовывается", что обеспечивает абсолютную случайность раздачи.