Uma linha de aritmética
Limbo não tem tabuleiro, cartas ou roleta. Você digita um multiplicador alvo, o mecanismo extrai um número, e você ganha se o número for pelo menos seu alvo — em qual caso você recebe seu alvo vezes sua aposta. Esse é o jogo inteiro, e torna o limbo o jogo de cassino mais fácil de precificar que existe, porque o número vem de uma fórmula com uma entrada aleatória.
VERIFICADO PELO MECANISMOcurve100() em _shared/rng.ts: o resultado em centésimos é floor((0.99 ÷ (1 − u)) × 100), fixado ao intervalo 100 a 1.000.000, onde u é o número uniforme em [0, 1) lido do HMAC da rodada — os primeiros oito bytes do resumo como hi ÷ 2³² + lo ÷ 2⁶⁴ (u64()). demoLimboBet() em _shared/demoLocal.ts extrai u no cursor 0, define win = outcome100 ≥ target100 e paga aposta × target100 ÷ 100 arredondado para o centavo. limboGame.tsx aceita alvos de 101 a 1.000.000 centésimos (×1.01 a ×10.000,00) e mostra a chance de vitória como 99 ÷ alvo.
Leia a fórmula de dentro para fora. O número aleatório u é distribuído uniformemente entre 0 e 1. Dividir 0.99 por 1 − u transforma essa distribuição uniforme em uma curva: u perto de 0 dá um número perto de ×0.99, u perto de 1 dá um número que corre em direção ao infinito. O ×100 e o floor o transformam em um número com duas casas decimais, e o clamp o fixa entre ×1.00 e ×10.000,00. O 0.99 é a vantagem da casa, e é o único lugar onde a vantagem existe.
A chance de vitória em cada alvo
Você ganha no alvo T quando floor(99 ÷ (1 − u)) é pelo menos T, escrito em centésimos. Como T é um número inteiro de centésimos, o floor não faz diferença nessa comparação: um valor de 199.7 arredonda para 199 e perde um alvo de 200, exatamente como o próprio 199.7 faria. Então a condição é simplesmente 99 ÷ (1 − u) ≥ T, que se reorganiza para u ≥ 1 − 99 ÷ T. A chance de um número uniforme chegar lá é 99 ÷ T, e essa é a resposta inteira.
| ALVO | CHANCE DE VITÓRIA | UMA VITÓRIA A CADA | RETORNO | VANTAGEM DA CASA | OSCILAÇÃO POR UNIDADE APOSTADA |
|---|---|---|---|---|---|
| ×1.01 | 98.02% | 1.02 rodadas | 99.00% | 1.00% | 0.14 |
| ×1.10 | 90.00% | 1.11 | 99.00% | 1.00% | 0.33 |
| ×1.20 | 82.50% | 1.21 | 99.00% | 1.00% | 0.46 |
| ×1.50 | 66.00% | 1.52 | 99.00% | 1.00% | 0.71 |
| ×1.98 | 50.00% | 2.00 | 99.00% | 1.00% | 0.99 |
| ×2.00 | 49.50% | 2.02 | 99.00% | 1.00% | 1.00 |
| ×3.00 | 33.00% | 3.03 | 99.00% | 1.00% | 1.41 |
| ×5.00 | 19.80% | 5.05 | 99.00% | 1.00% | 1.99 |
| ×10 | 9.90% | 10.1 | 99.00% | 1.00% | 2.99 |
| ×20 | 4.95% | 20.2 | 99.00% | 1.00% | 4.34 |
| ×50 | 1.98% | 50.5 | 99.00% | 1.00% | 6.97 |
| ×100 | 0,99% | 101 | 99,00% | 1,00% | 9,90 |
| ×1.000 | 0,099% | 1.010 | 99,00% | 1,00% | 31,4 |
| ×10.000 | 0,0099% | 10.101 | 99,00% | 1,00% | 99,5 |
Win chance = 99 ÷ target, exato. Return = target × win chance = 0,99 em cada linha. Swing é o desvio padrão do resultado de uma rodada por unidade apostada, √(0,99 × target − 0,9801); é o número que cresce, não o preço.
As duas colunas do meio são o ponto da tabela e não se movem. O target é tanto o obstáculo quanto o payout, então aumentá-lo reduz a win chance exatamente na proporção que aumenta o prêmio, e o produto permanece em 0,99. Um jogador que fica em ×1.10 e um jogador que atira em ×1.000 estão pagando o mesmo 1% por cada unidade que apostam; um deles paga em um fluxo constante e o outro em secas longas quebradas por uma bonança. A última coluna mede a diferença. Em ×2 o resultado de uma rodada oscila cerca de uma aposta; em ×1.000, trinta e uma apostas; no teto, cem.
Uma linha merece uma segunda olhada. Em ×1.98 a win chance é exatamente 50%, o que torna ×1.98 o resultado mediano: metade de todas as rodadas termina acima e metade abaixo. O round number ×2.00 é um lançamento de moeda com handicap de 0,5 ponto, 49,50%, e esse meio ponto é onde a edge de 1% fica naquele target. Todo outro target esconde a mesma edge da mesma forma — um jogo justo pagaria ×2.0202 para uma chance de 49,5%, e o engine paga ×2.
Esta é a parte do limbo que difere de um jogo de dados com um multiplicador de duas casas decimais. Lá, o payout é derivado da chance escolhida e arredondado, e o arredondamento pode custar ao jogador alguns centésimos de ponto em algumas configurações. No limbo o jogador nomeia o payout diretamente, em centésimos, e a fórmula compara o número sorteado contra essa mesma figura; não há segundo arredondamento a pagar. O floor na fórmula decide apenas quais duas casas decimais aparecem na tela. O artigo verificador explica por que esse único floor tem que ser reproduzido exatamente quando você verifica uma rodada.
Onde o número cai quando ninguém está mirando
A mesma fórmula descreve o número sorteado em si, independentemente de qualquer alvo. A chance de que atinja pelo menos ×x é 0.99 ÷ x, para qualquer x a partir de ×1.01 em diante, e isso dá toda a distribuição do que a tela mostra.
| INTERVALO | PARTICIPAÇÃO DAS RODADAS | SOBRE |
|---|---|---|
| ×1.00 (abaixo de cada alvo) | 1.98% | 1 em 50.5 |
| ×1.01 a ×1.49 | 32.02% | 1 em 3.1 |
| ×1.50 a ×1.99 | 16.50% | 1 em 6.1 |
| ×2.00 a ×2.99 | 16.50% | 1 em 6.1 |
| ×3.00 a ×4.99 | 13.20% | 1 em 7.6 |
| ×5.00 a ×9.99 | 9.90% | 1 em 10.1 |
| ×10 a ×99.99 | 8.91% | 1 em 11.2 |
| ×100 a ×999.99 | 0.891% | 1 em 112 |
| ×1.000 a ×9.999,99 | 0.0891% | 1 em 1.122 |
| ×10.000,00 (o limite) | 0.0099% | 1 em 10.101 |
Cada linha é 0,99 ÷ (limite inferior) menos 0,99 ÷ (limite superior). A primeira linha é a chance de 99 ÷ (1 − u) cair abaixo de 101 centésimos, u < 2 ÷ 101. A última linha é cada sorteio que a fixação prende em 1.000.000 centésimos. As linhas somam 100%.
Duas dessas linhas explicam a maior parte do que uma sessão de limbo parece. Cerca de um round em cinquenta mostra ×1.00, um número que nenhum alvo pode vencer: o 0,99 na fórmula significa que a curva começa abaixo de ×1.01, e os 1,98% mais baixos de sorteios nunca o ultrapassam. E cerca de um round em onze mostra ×10 ou mais, o que é frequente o suficiente para ser visto várias vezes por hora e para fazer um alvo alto parecer alcançável. É alcançável — um round em cento e um limpa ×100 — mas a tabela diz com que frequência, e "frequente o suficiente para lembrar" não é a mesma coisa que frequente.
Os rounds em que você não está apostando são retirados dessa mesma distribuição, razão pela qual uma tela cheia de resultados recentes não carrega informação sobre o próximo. Cada round é um HMAC fresco de um nonce fresco; um ×500 no histórico torna o próximo ×500 exatamente tão provável quanto era antes, 0,198%. Essa é a falácia do apostador em sua forma mais pura, porque aqui a independência não é uma suposição estatística, mas uma propriedade do hash.
O que custa perseguir um multiplicador grande
Como a margem é a mesma em todos os lugares, a escolha do alvo é uma escolha sobre variância, e a variância tem um preço que é fácil de declarar: quantas rodadas você deve esperar, e quão provável é uma espera longa. Com chance de vitória p por rodada, a chance de pelo menos uma vitória em N rodadas é 1 − (1 − p)ᴺ.
| ALVO | RODADAS | PELO MENOS UMA VITÓRIA | NENHUMA VITÓRIA |
|---|---|---|---|
| ×2 | 10 | 99.89% | 0.11% |
| ×10 | 20 | 87.57% | 12.43% |
| ×10 | 50 | 99.46% | 0.54% |
| ×100 | 100 | 63.03% | 36.97% |
| ×100 | 300 | 94.95% | 5.05% |
| ×1,000 | 1,000 | 62.86% | 37.14% |
| ×1,000 | 3,000 | 94.88% | 5.12% |
1 − (1 − 99 ÷ T)ᴺ. O padrão se repete em toda escala: apostar o próprio número de rodadas do alvo (100 rodadas em ×100, 1.000 em ×1.000) dá aproximadamente 63% de chance de um acerto, e três vezes essa quantidade dá aproximadamente 95%.
Coloque uma aposta e a aritmética fica fria. Cem apostas de uma unidade em ×100 custam 100 unidades para colocar e retornam 99 em média — novamente 1% — mas a média é feita de 63% de chance de receber aproximadamente 100 e 37% de chance de receber nada. O jogador que acerta uma vez nessas cem rodadas não está muito à frente; o jogador que acerta duas vezes está muito à frente, e o que acerta zero vezes perdeu os cem inteiros. Nada sobre o alvo muda o 1% que você paga por unidade. Tudo sobre ele muda como os resultados são distribuídos entre os jogadores.
A versão de alvo baixo da mesma armadilha é o martingale: aposte ×2, dobre após cada perda e colete uma unidade por vitória. A chance de vitória em ×2 é 49.50%, uma sequência perdedora de dez seguidas acontece 0.11% das vezes, e a décima primeira aposta é 1.024 unidades. O martingale, precificado funciona isso através de uma roleta; os números do limbo estão dentro de um décimo de ponto disso. Risco de ruína dá a fórmula geral para quanto tempo qualquer plano de aposta fixa dura contra uma vantagem de 1%.
Um detalhe prático da liquidação da demo: o pagamento é aposta × alvo arredondado para o centavo, então uma aposta de 0.37 em ×1.23 paga 0.45, não 0.4551. Em apostas de unidades inteiras com um alvo de duas casas decimais o produto já é exato e nada é perdido; em apostas pequenas e estranhas a fração de um centavo é. As rodadas com dinheiro real são liquidadas na precisão própria da moeda.
Verificando uma rodada por conta própria
- Antes de jogar, o painel de justiça mostra a impressão digital SHA-256 da seed do servidor. Rotacione o par de seeds depois para revelar a seed em si e confirmar a impressão digital.
- Calcule HMAC-SHA256 com a seed do servidor como chave e
- Pegue os primeiros oito bytes do digest como hi ÷ 2³² + lo ÷ 2⁶⁴ para obter u, então floor(0.99 ÷ (1 − u) × 100), limitado a 100–1.000.000. Esse é o resultado em centésimos, e deve corresponder à rodada até o último dígito.
O verificador de código aberto faz os três passos em um comando, `betkyo-verify limbo <serverSeed> <clientSeed> <nonce>`, e imprime o resultado em centésimos. Se corresponder à rodada na qual você foi pago, o número foi fixado antes de você digitar seu alvo — o que é o que um commitment prova, e tudo o que prova; o que um hash commitment prova desenha essa linha com cuidado.
FAQ
Quais são as probabilidades de ganhar em limbo?
Neste motor, 99 dividido por seu alvo: 49,50% em ×2, 9,90% em ×10, 0,99% em ×100 e 0,0099% (um em 10.101) no limite de ×10.000. A fórmula é exata porque o número sorteado é floor(99 ÷ (1 − u)) e o alvo é um número inteiro de centésimos.
Qual é a vantagem da casa em limbo?
1,00% em cada alvo. A chance de ganho é 99 ÷ alvo e o pagamento é o alvo, então cada aposta retorna 99,00% da stake em média. Nenhum multiplicador de alvo oferece melhor valor que outro; um alvo mais alto apenas faz os resultados oscilarem mais.
Qual é o melhor multiplicador de alvo para limbo?
Não existe um alvo melhor em expectativa — todos custam 1% por unidade de stake. Alvos baixos como ×1,10 ou ×1,50 pagam pequenas quantidades frequentemente; alvos altos pagam raramente e em grande volume. Escolha de acordo com a variância que você quer, não por valor, e lembre-se de que em ×100 você tem 37% de chance de nenhum ganho em 100 rodadas.
Com que frequência limbo quebra em 1,00?
1,98% das rodadas, aproximadamente uma em cinquenta. A fórmula começa em 0.99 ÷ (1 − u), então os 1,98% menores dos sorteios produzem um número abaixo de ×1,01, e nenhum alvo pode ganhar nessas rodadas.
×2 em limbo é uma aposta 50/50?
Quase: 49,50%. O ponto exato de 50% é ×1,98, que é o resultado mediano. O intervalo de meio ponto entre ×1,98 e ×2,00 é a vantagem da casa nesse alvo.
O arredondamento na fórmula custa algo ao jogador?
Não. O floor em floor(99 ÷ (1 − u)) apenas decide os dois decimais mostrados; como os alvos são centésimos inteiros, floor(x) ≥ T exatamente quando x ≥ T, então a chance de ganho é 99 ÷ alvo sem qualquer perda de arredondamento. O pagamento da demonstração é arredondado para o centavo, o que importa apenas em pequenas stakes ímpares.
FONTES E REFERÊNCIAS
- Betkyo engine source: curve100() and u64() in _shared/rng.ts (outcome = floor(0.99 ÷ (1 − u) × 100) clamped to 100–1,000,000; u from the first eight digest bytes); demoLimboBet() in _shared/demoLocal.ts (cursor 0, win = outcome100 ≥ target100, payout floored to cents); target range and the 99 ÷ target win-chance display in limbo/limboGame.tsx
- Cálculos exatos escritos para este artigo: chance de vitória 99 ÷ T para cada alvo, a distribuição de resultado 0.99 ÷ x, desvio padrão por rodada e probabilidades de pelo menos uma vitória; verificados novamente reproduzindo 400.000 rodadas do stream HMAC do engine através de curve100() (×10: 9.86% simulado vs 9.90% exato; abaixo de ×1.01: 1.97% vs 1.98%)
- Verificador provably-fair Betkyo (GitHub, MIT): o comando limbo reproduz o resultado de serverSeed, clientSeed e nonce
OS GAMES NESTE ARTIGO