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.
fonte
Respostas:
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.
fonte
Você deseja que o valor esperado seja 0,95. Em termos simples, esta é a soma de
probability * payout
para 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
seria 1/22 ^ 3. E se você tivesse 2 cerejas por bobina, a probabilidade de
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:
Qual deles é mais "divertido"? Diz-me tu...
fonte
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).
fonte
Os outros não tocaram neste pedaço:
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.
fonte
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.
fonte
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:
fonte