Я пытаюсь обернуть мою голову вокруг того, как доказуемо ярмарки работ и недавно столкнулся статьи Bitzino на колода перетасовки а также factoradics. То, что я не могу понять необходимость всех дополнительных операций (начальный перетасовать, резки палубы, factoradics и т.д.) над тем, что я думаю, что это гораздо проще схема:
- Сервер вычисляет server_seed и акции хэш (server_seed) с клиентом
- Клиент вычисляет client_seed и разделяет его с сервером
- использование сервера (server_seed + client_seed) в качестве затравки для PRNG
- Сервер генерирует N случайных величин, необходимых для результата игры (карты, номера, игровые позиции и т.д.) с PRNG. Для игр, требующих уникальных значения (карточные игры), мы продолжаем генераторный, пока они не являются уникальными.
- Поделитесь результатами игры (случайные величины) и server_seed с клиентом, который может работать тот же детерминированный ПСЧ (server_seed + client_seed), чтобы получить те же N случайные величины и обеспечить игру действительно справедливо.
Я просто, возможно, не понял некоторые фундаментальные потребности за все дополнительные осложнения. Единственным недостатком я могу думать с таким подходом является ситуация, когда нам нужно уникальные случайные переменные (например, карточные игры). Идея заключается в том, чтобы не вычислить полную колоду, так что никогда не требуется (максимальное количество карт, которые могут возникнуть в игре одного блекджек, например, <25). Да, несколько столкновений могут произойти при создании уников, но PRNGs является очень эффективным и детерминированным (так что они не использовать драгоценную энтропию), так что не должна быть проблемой.
Что я проглядел?
Обновить:
Я просто понял, что некоторые из игр не происходит в один этап, а предполагает обмен некоторых случайных величин (то есть. Карты) между шагами. Таким образом, теоретически можно было бы наблюдать некоторые из детерминированных результатов, и Datamining их, в худшем случае, быть в состоянии удержать остальную часть результатов. Однако, учитывая, что семя включает в себя истинную случайную составляющую и неизвестно клиентом, а период с PRNGs ОГРОМНЫ (2 ^ 19937 - 1 для Вихрь Мерсенна), я не уверен, если это действительно важно.