As rolagens de dados do Mini Kraken são justas? Um olhar por dentro do motor de dados
Toda mesa acaba perguntando: será que isso aqui é viciado? Aqui está um passeio honesto e sem jargão por como o Mini Kraken escolhe um número — por que é justo, como você pode verificar e o que nunca fazemos nos basti...
Uma sequência de azar pode fazer qualquer mesa perguntar se o rolador está viciado. A resposta deve vir da implementação e dos dados observados, com critérios que outras pessoas possam conferir.
O motor usado pelo frontend do Mini Kraken converte inteiros em faces por amostragem por rejeição, evitando viés de módulo sob a hipótese de uma fonte uniforme. Também publicamos uma auditoria técnica reproduzível: 14,4 milhões de faces do Dicecore 3.7.1, 44 testes principais, cinco gráficos, todas as sementes e os scripts de análise. Nenhum teste principal rejeitou seu modelo após ajuste de Holm a 1% de erro familiar. Esse resultado fornece evidência, sem transformar uma amostra finita em prova de aleatoriedade perfeita.
O que significa um dado justo
No modelo de um d20 justo, cada face tem probabilidade de 1 em 20. Independência significa que conhecer resultados anteriores não muda a distribuição do próximo. São propriedades distintas: uma sequência pode ter contagens equilibradas e ainda apresentar dependência.
Esse modelo não exige que vinte rolagens mostrem todas as faces, nem que resultados ruins sejam compensados depois. Uma sequência de três 1 em três posições previamente escolhidas tem probabilidade de 1 em 8.000; a chance de encontrar alguma sequência assim em uma sessão longa é outra pergunta, com muitas oportunidades de ocorrência.
De onde vem a rolagem
O frontend usa a API pública do @erpg/dicecore, configurada com xoshiro128ss. O padrão da biblioteca sem essa opção é MT19937. Sem semente fornecida, o motor solicita 128 bits a Web Crypto para inicializar um estado separado por chamada.
Xoshiro e MT19937 são geradores pseudoaleatórios determinísticos e não criptográficos. Receber uma semente de uma fonte criptográfica não os transforma em geradores criptográficos. Por isso distinguimos a distribuição das faces, a possibilidade de reproduzir resultados e a proteção contra adulteração.
O pacote npm 3.7.1 auditado declara licença MIT. O repositório público do fork possui termos atuais próprios; consulte a licença da versão que pretende utilizar. A biblioteca original também está disponível para inspeção.
Por que usamos amostragem por rejeição
Aplicar diretamente o resto da divisão de uma palavra aleatória pelo número de lados pode favorecer algumas faces: o intervalo de origem nem sempre é um múltiplo desse número.
O motor aceita apenas um intervalo cujo tamanho é múltiplo dos lados. Se uma palavra cai na sobra, consome outra palavra antes de produzir a face. Cada face tem exatamente o mesmo número de pré-imagens no intervalo aceito. Sob palavras uniformes e independentes, isso dá probabilidade de 1/s para um dado de s lados.
O artigo técnico demonstra essa conta e separa a prova da transformação das hipóteses sobre o PRNG. A rejeição acontece antes de existir uma face; não é uma escolha entre rolagens concluídas para melhorar o resultado.
A animação 3D apresenta as faces calculadas
No caminho examinado do frontend, o motor calcula a rolagem antes de enviar as faces ao adaptador 3D. A aparência, a textura e a animação apresentam esse resultado. A auditoria mede as faces da API, não uma simulação física usada como fonte de aleatoriedade.
O backend e a Fortuna possuem um runtime em Go. O estudo publicado mede o pacote JavaScript em Node e Chromium; não certifica todos os runtimes ou os históricos de todos os jogadores.
Reproduzir uma rolagem ajuda a verificar sua consistência
O descritor de replay preserva a semente, o algoritmo, as versões e o plano da fórmula. Reexecutar a fórmula com esse descritor permite comparar as faces com o resultado original. Todas as 14,4 milhões de faces do estudo passaram por essa comparação.
Replay não prova sozinho que ninguém selecionou uma semente conveniente, modificou um cliente ou adulterou um histórico. Essas garantias exigem um protocolo adicional. Sua utilidade aqui é permitir uma verificação exata das entradas e saídas do motor identificado.
Quando a impressão e a estatística divergem
Vantagem, desvantagem e somas têm distribuições diferentes de uma face isolada. Em 2d20 com vantagem, a chance de 20 é 9,75%, e a de 1 é 0,25%. Na soma de 2d6, 7 é mais frequente que 2. Isso decorre das regras aplicadas a faces justas.
Uma sessão curta também não tem obrigação de produzir um histograma equilibrado. Para investigar uma suspeita, preserve os resultados brutos, defina os testes antes de observar a amostra e considere a incerteza e as múltiplas comparações. Não repita a análise ou a coleta apenas até obter a conclusão desejada.
Leia Por que dados justos parecem viciados para entender a percepção de sequências, e use a auditoria técnica com dados e guia de reprodução para verificar a implementação medida. O rolador de dados permite experimentar a interface.