Comment puis-je garantir un taux de paiement approprié pour une machine à sous?


11

J'ai fait beaucoup de recherches sur les générateurs de nombres aléatoires pour les machines à sous, les calculs d'arrêt de bobine et comment donner physiquement à l'utilisateur une bonne chance de gagner.

Ce que je ne peux pas comprendre, c'est comment s'assurer correctement que la machine aura un taux de paiement de (disons) 95%.

Donc, j'ai une bobine avec 22 espaces. Rempli de 16 symboles différents.

Lorsque j'obtiens mon nombre aléatoire, le mod le divise par 64 et obtient le reste, je saute sur une table en boucle pour voir comment l'arrêt virtuel se rapporte à la position de la bobine.

Maintenant que je sais comment les rouleaux vont s'arrêter, je m'assure que le taux de distribution est correct? Pour chaque dollar investi, comment puis-je m'assurer que la machine paiera 0,95 centimes?

Merci pour les idées.

Je travaille dans actionscript, si cela aide avec les problèmes de langage, mais en général je cherche juste de la théorie.

Edit: Il y a de l'argent réel impliqué uniquement dans le fait qu'ils peuvent acheter plus de jetons pour jouer plus. Il n'y aura pas d'argent réel versé à la personne si elle devait toucher n'importe laquelle des lignes de paiement.


2
Ce code est-il critique pour l'entreprise? Vos utilisateurs gagnent-ils de l'argent réel?
Dave O.

Réponses:


9

Ce que vous demandez est lié à la théorie des probabilités . Il est plus facile de travailler avec une seule bobine, puis de l'étendre à plusieurs bobines une fois que vous comprenez comment cela fonctionne.

Considérez que si vous aviez une bobine, vous avez des symboles que vous souhaitez attribuer aux arrêts. Plus de symboles sur une bobine permettront un meilleur contrôle des résultats finaux, mais se sentiront plus aléatoires pour le joueur. Le but est d'équilibrer le nombre de symboles et d'arrêts pour que la machine soit moins aléatoire pour le joueur, et comme si elle avait plus de chance.

Si vous aviez 10 symboles et 10 arrêts, chaque symbole aurait 1 chance sur 10 d'apparaître. Peu importe l'ordre dans lequel les symboles sont (en théorie, dans la pratique, le caractère aléatoire du jeu est aussi bon que votre générateur de nombres aléatoires). En d'autres termes, vous pouvez vous attendre à voir 10 symboles différents en 10 tours, ou un symbole différent à chaque tour. La chance d'obtenir un symbole particulier est de 1 sur 10. Ainsi, pour 10 tours, vous pouvez vous attendre à voir chaque symbole individuel une fois. Si vous choisissez 1 symbole pour être le symbole "gagnant", le joueur devra jouer 10 fois avant de gagner. Avec ces informations, il est assez simple de calculer le paiement. Si vous leur facturez 1 $ pour chaque tour, ils devront dépenser 10 $ avant d'atterrir sur une victoire. Si votre cote attendue est de 95%, le calcul est de 10 $ x 95% = 9,50 $. En d'autres termes, le prix pour avoir atterri sur le symbole «gagnant» doit être de 9,50 $ pour avoir un gain prévu de 95%. Rappelez-vous maintenant que tout est basé sur la moyenne. Il n'y a aucune garantie que le symbole apparaîtra dans exactement 10 tours, cela peut prendre 100 ou 1000 tours, ou même juste 1 tour pour apparaître. Prises sur une période suffisamment longue, la machine paiera en moyenne le montant correct.

Pour que cela fonctionne sur plusieurs rouleaux, vous devez multiplier la probabilité de gagner de chaque bobine. Considérons un exemple de 3 rouleaux avec 10 symboles sur chaque bobine et 1 symbole gagnant sur chaque bobine comme dans l'exemple précédent. Supposons que vous vouliez que le joueur gagne uniquement lorsque les trois rouleaux affichent le symbole gagnant en même temps. Pour ce faire, vous devez déterminer la probabilité pour chaque bobine, puis multiplier les probabilités ensemble. Nous savons de l'exemple précédent que la probabilité est de 1 sur 10. Cela peut aussi être écrit comme 1/10, ou 0,1. La probabilité que les trois rouleaux atterrissent sur le symbole gagnant en même temps est de 1/10 x 1/10 x 1/10, ou 0,1 x 0,1 x 0,1, ou 0,001, ou 1 sur 1000. Nous voyons qu'il y a beaucoup faible probabilité que le symbole gagnant apparaisse sur les trois rouleaux en même temps. Le joueur devrait tourner 1000 fois en moyenne avant de gagner. Si chaque tour était de 1 $, ils devraient dépenser 1000 $ pour gagner. Le calcul du pourcentage gagnant est alors: 1000 $ x 95% ** = 950,00 $.

Voilà la théorie en bref. Le reste consiste à équilibrer les différentes probabilités pour rendre le jeu plus intéressant.

Dans votre cas, si vous avez 22 arrêts et 16 symboles. Cela signifie que vous aurez 6 symboles qui sont identiques à au moins un autre symbole. La probabilité exacte d'apparition d'un symbole particulier dépend du nombre total d'occurrences de ce symbole sur la bobine. Le nombre de chaque symbole sur chaque bobine dépend vraiment de vous.

Par exemple, disons que vous avez 15 symboles uniques et 7 qui sont tous des doublons. La probabilité que l'un des doublons apparaisse est de 7 sur 22, ou 7/22, ou 32%. Si vous aviez 1 bobine, à 1 $ la rotation, le joueur atterrirait 32 fois sur l'un des doublons en 100 tours. Le paiement est calculé comme (1 / (32/100)) x 95% x coût. Donc, si cela coûte 1 $ par tour, vous paierez 2,97 $ au joueur à chaque fois qu'un des doublons apparaît.

Comme autre exemple, si vous aviez 3 rouleaux et que cela coûte 2 $ par rotation, vous calculez le paiement comme suit: (1 / (32/100 x 32/100 x 32/100)) x 0,95 x coût $ = 30,5 x 95% x 2 $ = paiement de 57,95 $. Vous pouvez calculer les probabilités des autres non-doublons comme suit: (1 / (1/22 x 1/22 x 1/22)) x 0,95 x coût $ = 10648 x 0,95 x 2 $ = 20231,20 $. C'est un nombre assez important, mais la probabilité que l'une des séquences gagnantes apparaisse est assez faible (c'est à peu près 9x10 ^ -5).

Dans les derniers exemples, les différences sont assez extrêmes, le joueur gagne soit 58 $ très souvent, soit 20231 $ presque jamais, sans variation entre les deux. L'art de rendre le jeu engageant consiste à créer plus d'occasions de gagner avec des montants variables. Ceci est souvent accompli en mélangeant des bobines avec différentes probabilités. Donc, au lieu de chaque bobine ayant
le même nombre de chaque symbole, une bobine peut avoir plus de symboles, ou plus d'un type de symbole, etc. La formule de calcul de la probabilité est la même qu'avant, n'oubliez pas d'utiliser les bons ratios pour chaque bobine. Par exemple, si vous avez la bobine A avec 22 arrêts et 3 occurrences d'un symbole, la bobine B avec 26 arrêts et 2 occurrences du symbole, et la bobine C avec 20 arrêts et 5 occurrences du symbole, la formule ressemblerait à ceci: (1 / (3/22 x 2/26 x 5/20)) x 95% x coût.

Et c'est tout ce qu'il y a à faire. J'espère que je n'ai pas fait trop d'erreurs dans les exemples, donc vous pourrez toujours le trouver utile: P

** Une note sur la notation, 95% est identique à 0,95. 32/100 est identique à 0,32, 7/22 est identique à 0,31818 .. etc.


Incroyable. Tu m'as sauvé beaucoup de travail. J'ai lu beaucoup de documents sur le fonctionnement des machines à sous, mais cette réponse m'a vraiment vendu en termes simples. Merci!
Stephen

7

Vous voulez que la valeur attendue soit 0,95. En termes simples, c'est la somme de probability * payoutpour chaque état.

Une méthode de force brute serait d'itérer sur les 22 ^ 3 états (en supposant que vous ayez 3 rouleaux), d'additionner le paiement et de diviser la somme par 22 ^ 3. Cependant, comme la plupart des États ne paient probablement rien, il pourrait être plus facile de déterminer tous les États qui paient à la place.

Par exemple, si vous aviez 1 sybols Bell par bobine, la probabilité de

[Bell] [Bell] [Bell]

serait 1/22 ^ 3. Et si vous aviez 2 cerises par bobine, la probabilité de

[Cherry] [Cherry] [any]

serait 1/11 ^ 2.


EDIT: ce qui précède vous indique uniquement comment vérifier que les paiements donnent le taux de retour souhaité. À titre d'exemple simple, considérons un jeu où vous payez 1 $ pour lancer 2 pièces. Voici trois plans de paiement qui donnent tous un taux de retour de 0,95:

  1. Deux têtes paient 3,80 $, tout le reste ne paie rien
  2. Deux têtes ou deux queues payent 1,90 $, tout le reste ne paie rien
  3. Deux têtes ne payent rien, tout le reste paie 1,26 $

Lequel est le plus "amusant"? À vous de me dire...


Cela étant dit, aucune machine à sous fabriquée au cours des dernières décennies ne tourne comme ça. Si trois cloches rapportent des jackpots, ils vont monter de manière disproportionnée, peu importe le nombre de bobines physiques.

3
Je fais juste les calculs - le plaisir est le travail de quelqu'un d'autre :)
celion

@joe - Je suis d'accord, les cloches seront sur la bobine une tonne de moins que le reste des symboles. @celion Je ne comprends pas encore tout à fait. Disons que j'ai les rouleaux (j'en ai 5) et que l'utilisateur appuie sur le bouton pour jouer au jeu. J'attrape les 5 prochains nombres aléatoires, fais les calculs pour trouver les arrêts et fais apparaître les symboles. Comment le taux de paiement affecte-t-il les nombres aléatoires et les arrêts? Dois-je régler le paiement en fonction des symboles qui sont sur la bobine et du montant des symboles de paiement élevé à faible contenu sur la bobine?
Kris.Mitchell

@ Kris-Mitchell - Peut-être que je me méprends sur le fonctionnement des machines à sous. J'ai supposé que pour chaque résultat possible, le paiement est fixe. Si les symboles sur la bobine changent à chaque tour, les calculs deviennent un peu plus difficiles, mais vous devriez toujours être en mesure de déterminer (hors ligne, avec un crayon et du papier) la probabilité d'un état donné. Cela vous donne simplement un moyen de vous assurer qu'un ensemble de paiements donnera le taux de retour (moyen) souhaité; il existe un nombre infini de façons d'affecter les paiements compte tenu de cette contrainte, c'est donc à vous d'en choisir une «amusante».
celion

@celion - Je ne voulais pas vous manquer de guide, et si quelqu'un d'autre le lit, corrigez-moi si je me trompe, mais le paiement est fixe. Je ne crois pas que les rouleaux changent à chaque tour. Je pense que les rouleaux pour les machines à sous vidéo sont juste beaucoup plus gros qu'une vraie machine à sous mécanique. Soit dit en passant, je pense que j'apprécierais le plus l'option 2 ou 3. Deux est suffisamment risqué pour être un défi, où vous pouvez gagner de l'argent, tout en sachant que vous perdrez. Trois, d'autre part, semble être meilleur, car on a l'impression que vous avez plus de chances de gagner.
Kris.Mitchell

1

Le moyen le plus simple et le plus fiable de le faire n'est pas de simuler des rouleaux mais plutôt d'avoir un dé interne qui choisit ce que le joueur gagne et ensuite de remplir le rouleau de manière procédurale (ou d'en avoir un grand nombre enregistré quelque part, mais cela prendra probablement plus de temps pour faire).


0

Les autres n'ont pas touché ce bit:

..comment s'assurer correctement que la machine va avoir un taux de paiement ..

Si vous utilisez des nombres complètement aléatoires, il n'y a aucun moyen d'en être sûr. Cependant, vous pouvez conserver des statistiques sur les paiements et ajuster la probabilité d'un paiement au moment de l'exécution à l'aide d'une boucle de rétroaction .

S'il n'y a pas eu de paiement depuis un certain temps, augmentez la probabilité de gagner, et vice versa.

Vous pouvez exécuter des simulations des exécutions (quelques milliards d'itérations devraient le faire) pour vous assurer que votre boucle de rétroaction fonctionne comme prévu.


1
Votre solution est inutile. Un générateur de nombres aléatoires parfait (RNG) approchera le taux de paiement exact au fil du temps. S'il est vrai que l'utilisation de votre fonction RNG intégrée par défaut n'est pas vraiment acceptable (principalement en raison de la prévisibilité), la bonne solution consiste à utiliser un meilleur RNG, par exemple: en.wikipedia.org/wiki/Random_number_generation#Physical_methods . En outre, y compris la logique de jeu qui n'est pas aléatoire ou "ajuste" le taux de paiement comme vous le suggérez est illégal dans la plupart des endroits. C'est bien pour un site Web gimmicky, mais un non-démarreur total pour une application du monde réel.
Luke Van En

1
@lukevanin, c'est légalement obligatoire dans d'autres endroits, il s'agit donc vraiment de comprendre le contexte.
Peter Taylor

0

Notez que jusqu'à présent, toutes les réponses supposent que vous disposez d'un RNG parfait pour travailler. Un RNG logiciel pur est en fait un pseudo-RNG, ou PRNG pour faire court, car la même valeur d'entrée (valeur de départ) générera toujours la même séquence de nombres aléatoires, donc un PRNG est intrinsèquement prévisible.

Bien sûr, il est difficile de distinguer les «vrais» des «pseudo» RNG du côté client, en particulier avec un petit échantillon, mais il y a une différence - dans une application où l'argent et la responsabilité juridique sont impliqués, je ne voudrais pas prendre des risques. Si vous avez besoin d'un RNG, la seule chose pire que de ne pas avoir de RNG est d'avoir un RNG cassé sans le savoir, c'est donc un domaine où votre entreprise ne devrait jamais couper les coins ronds ni apprendre à la volée.

Il existe de bons algorithmes PRNG, mais ils ne correspondront jamais à une source physique d'entropie. Donc, pour que les mathématiques fonctionnent en pratique comme en théorie, assurez-vous d'utiliser le meilleur RNG possible - c'est dans le meilleur intérêt de votre entreprise, à la fois légalement et financièrement.


0

Une approche très simple pourrait être simplement d'itérer sur tous les résultats de rotation possibles et d'additionner les gains combinés, par rapport au total des sommes collectées.

Commencez par créer les dispositions de roue, autorisez les symboles en double si vous le souhaitez. Déterminez les schémas de gains et les gains que vous souhaitez. Exécutez le modèle de roue via un algorithme pour déterminer le paiement total, divisez par l'argent collecté, c'est votre ratio de paiement.

S'il est trop élevé, ajoutez plus d'espaces vides ou des symboles moins payants, OU réduisez le paiement du motif (c.-à-d. Que trois barres simples peuvent être de 10 $ ou 5 $). Réexécutez l'algorithme jusqu'à ce que le taux de paiement souhaité soit déterminé.

Cela vous permet de conserver des paiements de valeur égale (pas 4,58 $ pour un modèle gagnant, vous pouvez utiliser 5 $). Vous ne pourrez peut-être pas trouver un paiement exact de 95%, mais avec des ajustements, vous pouvez vous en approcher.

Voici un exemple d'algorithme pour déterminer le rapport de rémunération d'une disposition de roue:

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.