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.
la source
Réponses:
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.
la source
Vous voulez que la valeur attendue soit 0,95. En termes simples, c'est la somme de
probability * payout
pour 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
serait 1/22 ^ 3. Et si vous aviez 2 cerises par bobine, la probabilité de
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:
Lequel est le plus "amusant"? À vous de me dire...
la source
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).
la source
Les autres n'ont pas touché ce bit:
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.
la source
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.
la source
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:
la source