Como garantir uma taxa de pagamento apropriada para uma máquina caça-níqueis?

11

Eu pesquisei bastante sobre geradores de números aleatórios para máquinas caça-níqueis, cálculos de paradas de bobinas e como dar fisicamente ao usuário uma boa chance de ganhar.

O que não consigo descobrir é como garantir adequadamente que a máquina terá uma classificação de pagamento de (digamos) 95%.

Então, eu tenho um carretel configurado com 22 espaços nele. Cheio de 16 símbolos diferentes.

Quando obtenho meu número aleatório, mod divido-o por 64 e obtenho o restante, pulo para uma tabela de loop up para ver como a parada virtual se relaciona à posição do carretel.

Agora que sei como os carretéis vão parar, verifique se a taxa de pagamento está correta? Para cada dólar investido, como garantir que a máquina pague 0,95 centavo?

Obrigado pelas idéias.

Estou trabalhando no actionscript, se isso ajuda com os problemas de linguagem, mas, em geral, estou apenas procurando por teoria.

Edit: Há dinheiro real envolvido apenas no fato de que eles podem comprar mais fichas para jogar mais. Não haverá dinheiro real pago à pessoa, se ela realmente atingir uma das linhas de pagamento.

Kris.Mitchell
fonte
2
Esse código é crítico para os negócios? Seus usuários ganham dinheiro real?
Dave O.

Respostas:

9

O que você está perguntando está relacionado à teoria da probabilidade . É mais fácil trabalhar com um rolo e depois estendê-lo para vários rolos depois que você entender como ele funciona.

Considere se você tinha um rolo, alguns símbolos que deseja atribuir às paradas. Mais símbolos em um carretel levarão a um maior controle sobre os resultados finais, mas parecerão mais aleatórios para o jogador. O objetivo é equilibrar o número de símbolos e paradas, para que a máquina pareça menos aleatória para o jogador e como se tivesse mais chance.

Se você tivesse 10 símbolos e 10 paradas, cada símbolo teria 1 em 10 chances de aparecer. Não importa em que ordem os símbolos estão (em teoria, na prática, a aleatoriedade do jogo é tão boa quanto o seu gerador de números aleatórios). Em outras palavras, você pode esperar ver 10 símbolos diferentes em 10 rodadas, ou um símbolo diferente a cada rodada. A chance de obter um símbolo específico é de 1 em 10. Portanto, para cada 10 giros, você pode esperar ver cada símbolo individualmente uma vez. Se você escolheu 1 símbolo para ser o símbolo "vencedor", o jogador precisaria jogar 10 vezes antes de ganhar. Com essas informações, é bastante simples calcular o pagamento. Se você cobrar US $ 1 por cada rodada, eles terão que gastar US $ 10 antes de conseguirem uma vitória. Se sua classificação esperada for 95%, o cálculo será de US $ 10 x 95% = US $ 9,50. Em outras palavras, o prêmio pelo desembarque no símbolo "vencedor" deve ser de US $ 9,50 para ter um pagamento esperado de 95%. Agora lembre-se de que tudo isso é baseado na média. Não há garantia de que o símbolo apareça em exatamente 10 giros, pode demorar 100 ou 1000 giros ou até apenas 1 giro para aparecer. Levada um tempo suficiente, a máquina pagará a quantia correta em média.

Para que isso funcione em vários rolos, é necessário multiplicar a probabilidade de ganho de cada rolo. Considere um exemplo de 3 rolos com 10 símbolos em cada rolo e 1 símbolo vencedor em cada rolo, como no exemplo anterior. Digamos que você queria que o jogador ganhasse apenas quando os três rolos exibirem o símbolo vencedor ao mesmo tempo. Para fazer isso, você precisa calcular a probabilidade de cada rolo e depois multiplicar as probabilidades. Sabemos pelo exemplo anterior que a probabilidade é de 1 em 10. Isso também pode ser escrito como 1/10 ou 0,1. A probabilidade de os três cilindros pousarem no símbolo vencedor ao mesmo tempo é 1/10 x 1/10 x 1/10, ou 0,1 x 0,1 x 0,1, ou 0,001, ou 1 em 1000. Vemos que há muito menor probabilidade do símbolo vencedor aparecer nos três cilindros ao mesmo tempo. O jogador precisaria girar 1000 vezes em média antes de vencer. Se cada rodada fosse $ 1, eles precisariam gastar $ 1000 para ganhar. O cálculo para a porcentagem de ganhos é então: $ 1000 x 95% ** = $ 950,00.

Essa é a teoria em poucas palavras. O resto é equilibrar as diferentes probabilidades para tornar o jogo mais interessante.

No seu caso, se você tiver 22 paradas e 16 símbolos. Isso significa que você terá 6 símbolos iguais a pelo menos um outro símbolo. A probabilidade exata de qualquer símbolo específico aparecer depende do número total de ocorrências desse símbolo no carretel. A quantidade de cada símbolo em cada rolo depende de você.

Como exemplo, digamos que você tenha 15 símbolos únicos e 7, todos duplicados. A chance de qualquer uma das duplicatas aparecer é 7 em 22, ou 7/22, ou 32%. Se você tivesse 1 bobina, a US $ 1 por rodada, o jogador chegaria a uma das duplicatas 32 vezes em 100 rodadas. O pagamento é calculado como (1 / (32/100)) x 95% x $ custo. Portanto, se custar US $ 1 por rodada, você pagaria ao jogador US $ 2,97 toda vez que uma das duplicatas aparecesse.

Como outro exemplo, se você tivesse 3 cilindros e custasse US $ 2 por rodada, calcularia o pagamento da seguinte maneira: (1 / (32/100 x 32/100 x 32/100)) x 0,95 x $ custo = 30,5 x 95% x $ 2 = pagamento de $ 57,95. Você pode calcular as probabilidades das outras não duplicatas da seguinte maneira: (1 / (1/22 x 1/22 x 1/22)) x 0,95 x $ custo = 10648 x 0,95 x $ 2 = $ 20231,20. É um número bastante grande, mas a probabilidade de qualquer uma das seqüências vencedoras aparecer é bastante baixa (é aproximadamente 9x10 ^ -5).

Nos últimos exemplos, as diferenças são bastante extremas: o jogador ganha $ 58 com muita frequência ou $ 20231 quase nunca, sem variação entre os dois. A arte de tornar o jogo envolvente é criar mais oportunidades de ganhar com quantidades variadas. Isso geralmente é feito misturando bobinas com probabilidades diferentes. Então, ao invés de cada rolo ter
o mesmo número de cada símbolo, um carretel pode ter mais símbolos ou mais de um tipo de símbolo, e assim por diante. A fórmula para calcular a probabilidade é a mesma de antes, lembre-se de usar as proporções corretas para cada rolo. Por exemplo, se você tiver a bobina A com 22 paradas e 3 ocorrências de um símbolo, a bobina B com 26 paradas e 2 ocorrências do símbolo e a bobina C com 20 paradas e 5 ocorrências do símbolo, a fórmula terá a seguinte aparência: (1 / (3/22 x 2/26 x 5/20)) x 95% x custo $.

E é só isso. Espero que eu não tenha cometido muitos erros nos exemplos, para que você ainda considere útil: P

** Uma observação na notação, 95% é idêntica a 0,95. 32/100 é idêntico a 0,32, 7/22 é idêntico a 0,31818 .. etc.

lukevanin
fonte
Surpreendente. Você acabou de me poupar muito trabalho. Eu li muitos documentos sobre como os slots devem funcionar, mas essa resposta realmente me vendeu em termos de leigos. Obrigado!
Stephen Stephen
7

Você deseja que o valor esperado seja 0,95. Em termos simples, esta é a soma de probability * payoutpara cada estado.

Um método de força bruta seria iterar todos os 22 ^ 3 estados (supondo que você tenha 3 cilindros), somar o pagamento e dividir a soma por 22 ^ 3. No entanto, como a maioria dos estados provavelmente não paga nada, pode ser mais fácil calcular todos os estados que pagam.

Por exemplo, se você tivesse 1 sybols de Bell por bobina, a probabilidade de

[Bell] [Bell] [Bell]

seria 1/22 ^ 3. E se você tivesse 2 cerejas por bobina, a probabilidade de

[Cherry] [Cherry] [any]

seria 1/11 ^ 2.


EDIT: O texto acima mostra apenas como verificar se os pagamentos fornecem a taxa de retorno desejada. Como um exemplo simples, vamos considerar um jogo em que você paga $ 1 para jogar 2 moedas. Aqui estão três esquemas de pagamento que oferecem uma taxa de retorno de 0,95:

  1. Duas cabeças pagam US $ 3,80, tudo o resto não paga nada
  2. Duas caras ou duas caudas pagam US $ 1,90, tudo o resto não paga nada
  3. Duas cabeças não pagam nada, tudo o resto paga US $ 1,26

Qual deles é mais "divertido"? Diz-me tu...

celion
fonte
Dito isto, nenhuma máquina de caça-níqueis fabricada nas últimas décadas gira dessa maneira. Se três sinos pagarem jackpots, eles aumentarão desproporcionalmente menos, não importa quantos estejam no tambor físico.
3
Eu só lidar com a matemática - o que torna divertido é o trabalho de outra pessoa :)
celion
@ joe - eu concordo, os sinos estarão no carretel uma tonelada a menos do que o resto dos símbolos. @celion Eu não entendo completamente ainda. Digamos que eu tenho os rolos (eu tenho 5) e o usuário aperta o botão para jogar o jogo. Pego os próximos 5 números aleatórios, faço os cálculos para encontrar as paradas e mostro os símbolos. Como a taxa de pagamento afeta os números aleatórios e as paradas? Defino o pagamento pelos símbolos que estão no carretel e a quantidade de símbolos de alto a baixo pagamento contidos no carretel?
Kris.Mitchell
@ Kris-Mitchell - Talvez eu esteja entendendo mal como as máquinas caça-níqueis funcionam. Eu assumi que, para cada resultado possível, o pagamento é fixo. Se os símbolos no carretel mudarem a cada rodada, a matemática ficará um pouco mais difícil, mas você ainda poderá descobrir (offline, com lápis e papel) a probabilidade de um determinado estado. Isso oferece uma maneira de garantir que um conjunto de pagamentos ofereça a taxa de retorno (média) desejada; há um número infinito de maneiras de atribuir os pagamentos, devido a essa restrição; portanto, você deve escolher uma opção "divertida".
Celion
@celion - Eu não queria te enganar, e se alguém mais estiver lendo isso me corrija se eu estiver errado, mas o pagamento é fixo. Não acredito que os rolos mudem a cada rodada. Eu acho que os rolos para slots de vídeo são bem maiores do que uma verdadeira slot machine mecânica. A propósito, acredito que eu gostaria mais da opção 2 ou 3. Dois é arriscado o suficiente para ser um desafio, onde você pode ganhar dinheiro, enquanto ainda sabe que vai perder. Três, por outro lado, parecem ser melhores porque parece que você tem mais chance de ganhar.
precisa saber é o seguinte
1

A maneira mais fácil e confiável de fazer isso não é simular bobinas, mas sim ter um dado interno que escolha o que o jogador ganha e então apenas preencher a bobina proceduralmente (ou ter um grande conjunto deles salvos em algum lugar, mas que provavelmente levará mais tempo para ser processado). faço).

Cpt. Vermelho
fonte
0

Os outros não tocaram neste pedaço:

..como garantir adequadamente que a máquina tenha uma classificação de pagamento ..

Se você usar números completamente aleatórios, não há como ter certeza. No entanto, você pode manter as estatísticas dos pagamentos e ajustar a probabilidade de um pagamento em tempo de execução usando um loop de feedback .

Se não houver um pagamento há algum tempo, torne mais provável a vitória e vice-versa.

Você pode executar simulações das execuções (alguns bilhões de iterações devem fazer) para garantir que seu loop de feedback funcione conforme o esperado.

Jari Komppa
fonte
1
Sua solução é desnecessária. Um gerador de números aleatórios perfeito (RNG) se aproximará da classificação exata de pagamentos ao longo do tempo. Embora seja verdade que o uso da função RNG interna padrão não seja realmente aceitável (principalmente devido à previsibilidade), a solução correta é usar um RNG melhor, por exemplo: en.wikipedia.org/wiki/Random_number_generation#Physical_methods . Além disso, incluir uma lógica de jogo não aleatória ou "ajustar" a classificação de pagamento sugerida é ilegal na maioria dos lugares. É bom para um site enigmático, mas totalmente inativo para um aplicativo do mundo real.
Luke Van Em
1
@ lukevanin, é legalmente exigido em outros lugares, por isso é realmente um caso de compreensão do contexto.
Peter Taylor
0

Observe que todas as respostas até agora pressupõem que você tenha um RNG perfeito para trabalhar. Um RNG puro de software é na verdade um pseudo-RNG, ou PRNG, porque o mesmo valor de entrada (semente) sempre gerará a mesma sequência de números aleatórios; portanto, um PRNG é inerentemente previsível.

Obviamente, é um problema difícil distinguir RNGs "verdadeiros" de "pseudo" no lado do cliente, especialmente com um pequeno tamanho de amostra, mas há uma diferença - em um aplicativo em que dinheiro e responsabilidade legal estão envolvidos, eu não faria isso. arrisque. Se você precisa de um RNG, a única coisa pior do que não ter RNG é ter um RNG quebrado sem saber, portanto, essa é uma área em que sua empresa nunca deve cortar custos nem aprender rapidamente.

Existem bons algoritmos PRNGs, mas eles nunca corresponderão a uma fonte física de entropia. Portanto, para que a matemática funcione na prática e na teoria, use o melhor RNG possível - é do interesse da sua empresa, tanto legal quanto financeiramente.

Hackworth
fonte
0

Uma abordagem muito simples poderia ser iterativa sobre todos os resultados possíveis de giro e somar os ganhos combinados, versus o total de dinheiro coletado.

Comece criando os layouts de roda, permita símbolos duplicados, se desejar. Determine os padrões e pagamentos vencedores que você deseja. Execute o padrão de roda através de um algoritmo para determinar o pagamento total, divida pelo dinheiro coletado, esta é a sua taxa de pagamento.

Se estiver muito alto, adicione mais espaços em branco ou símbolos de pagamento menor, OU abaixe o pagamento do padrão (ou seja, três barras únicas podem ser $ 10 ou $ 5). Execute novamente o algoritmo até que a taxa de pagamento desejada seja determinada.

Isso permite que você mantenha pagamentos com valores pares (e não US $ 4,58 para um padrão vencedor, você pode usar US $ 5). Talvez você não consiga chegar a um pagamento exato de, digamos, 95%, mas com os ajustes você pode se aproximar.

Aqui está um exemplo de algoritmo para determinar a proporção de pagamento de um layout de roda:

payout = 0.0
collected = 0.0
ratio = 0.0
bet = 1.0
FOREACH symbol1 IN wheel1
  FOREACH symbol2 IN wheel2
    FOREACH symbol3 IN wheel3
      payout = payout + DetermineWinnings(symbol1, symbol2, symbol3, bet)
      collected = collected + bet
    NEXT
  NEXT
NEXT
ratio = payout / collected
Doug.McFarlane
fonte