Come posso garantire un rapporto di pagamento adeguato per una slot machine?


11

Ho fatto molte ricerche sui generatori di numeri casuali per le slot machine, i calcoli di arresto della bobina e su come offrire all'utente una buona possibilità di vincere.

Quello che non riesco a capire è come assicurare correttamente che la macchina abbia una valutazione del pagamento (diciamo) del 95%.

Quindi, ho una bobina impostata con 22 spazi su di essa. Riempito con 16 simboli diversi.

Quando ottengo il mio numero casuale, mod lo divido per 64 e ottengo il resto, salgo su una tabella di loop up per vedere come lo stop virtuale si collega alla posizione della bobina.

Ora che ho il modo in cui i rulli si fermeranno, posso assicurarmi che il rapporto di pagamento sia corretto? Per ogni dollaro che inseriscono, come posso assicurarmi che la macchina pagherà 0,95 centesimi?

Grazie per le idee

Sto lavorando in ActionScript, se questo aiuta con le questioni linguistiche, ma in generale sto solo cercando la teoria.

Modifica: ci sono soldi veri coinvolti solo nel fatto che possono comprare più gettoni per giocare di più. Non ci saranno soldi veri pagati alla persona, se dovessero effettivamente colpire una delle linee di pagamento.


2
Questo codice aziendale è importante? I tuoi utenti vincono soldi veri?
Dave O.

Risposte:


9

Quello che stai chiedendo è legato alla teoria della probabilità . È più semplice lavorare con una bobina, quindi estenderla a più bobine una volta capito come funziona.

Considera se hai una bobina, hai dei simboli che vuoi assegnare alle fermate. Più simboli su una bobina porteranno a un maggiore controllo sui risultati finali, ma si sentiranno più casuali per il giocatore. L'obiettivo è bilanciare il numero di simboli e le fermate in modo che la macchina si senta meno casuale per il giocatore e che abbia più possibilità.

Se avessi 10 simboli e 10 stop, ogni simbolo avrebbe 1 su 10 possibilità di apparire. Non importa in quale ordine siano i simboli (in teoria, in pratica la casualità del gioco è buona solo come il tuo generatore di numeri casuali). In altre parole, potresti aspettarti di vedere 10 simboli diversi in 10 giri o un simbolo diverso ad ogni giro. La possibilità di ottenere un simbolo particolare è 1 su 10. Quindi per ogni 10 giri, puoi aspettarti di vedere ogni singolo simbolo una volta. Se hai scelto 1 simbolo per essere il simbolo "vincente", il giocatore dovrebbe giocare 10 volte prima di vincere. Con queste informazioni è abbastanza semplice elaborare il pagamento. Se li addebiti $ 1 per ogni giro, dovranno spendere $ 10 prima di ottenere una vincita. Se la tua valutazione prevista è del 95%, il calcolo è $ 10 x 95% = $ 9,50. In altre parole, il premio per l'atterraggio sul simbolo "vincente" deve essere di $ 9,50 per avere un pagamento previsto del 95%. Ora ricorda che questo è tutto basato sulla media. Non c'è garanzia che il simbolo appaia esattamente in 10 giri, potrebbero essere necessari 100 o 1000 giri o anche solo 1 giro per apparire. Dopo un periodo di tempo sufficientemente lungo, la macchina pagherà in media l'importo corretto.

Per farlo funzionare su più rulli è necessario moltiplicare la probabilità di vincita di ciascun rullo. Prendi in considerazione un esempio di 3 rulli con 10 simboli su ogni rullo e 1 simbolo vincente su ciascun rullo come nell'esempio precedente. Diciamo che volevi che il giocatore vincesse solo quando tutte e tre le ruote mostrano contemporaneamente il simbolo vincente. Per fare ciò, è necessario calcolare la probabilità per ogni bobina, quindi moltiplicare le probabilità insieme. Dall'esempio precedente sappiamo che la probabilità è 1 su 10. Questo può anche essere scritto come 1/10 o 0,1. La probabilità che tutte e tre le ruote atterrino contemporaneamente sul simbolo vincente è 1/10 x 1/10 x 1/10 o 0,1 x 0,1 x 0,1 o 0,001 o 1 su 1000. Vediamo che c'è molto minore probabilità che il simbolo vincente appaia su tutti e tre i rulli contemporaneamente. Il giocatore dovrebbe girare in media 1000 volte prima di vincere. Se ogni giro fosse di $ 1 avrebbero dovuto spendere $ 1000 per vincere. Il calcolo per la percentuale vincente è quindi: $ 1000 x 95% ** = $ 950,00.

Questa è la teoria in breve. Il resto sta bilanciando bilanciando le diverse probabilità per rendere il gioco più interessante.

Nel tuo caso, se hai 22 fermate e 16 simboli. Questo significa che avrai 6 simboli che sono gli stessi di almeno un altro simbolo. La probabilità esatta della comparsa di un particolare simbolo dipende dal numero totale di occorrenze di quel simbolo sulla bobina. Quanti di ogni simbolo sono su ogni bobina dipende davvero da te.

Ad esempio, supponiamo che tu abbia 15 simboli univoci e 7 che sono tutti duplicati. La possibilità che appaia uno qualsiasi dei duplicati è 7 su 22, o 7/22 o 32%. Se avessi 1 bobina, a $ 1 a giro, il giocatore atterrerebbe su uno dei duplicati 32 volte in 100 giri. Il pagamento è calcolato come (1 / (32/100)) x 95% x $ costo. Quindi, se costa $ 1 per giro, pagheresti al giocatore $ 2,97 ogni volta che appare uno dei duplicati.

Come altro esempio, se avessi 3 rulli e costa $ 2 per giro, dovrai calcolare il pagamento come segue: (1 / (32/100 x 32/100 x 32/100)) x 0,95 x $ costo = 30,5 x 95% x $ 2 = $ 57,95 di pagamento. È possibile calcolare le probabilità degli altri non duplicati come segue: (1 / (1/22 x 1/22 x 1/22)) x 0,95 x $ costo = 10648 x 0,95 x $ 2 = $ 20231,20. È un numero piuttosto elevato, ma la probabilità che una qualsiasi delle sequenze vincenti appaia è piuttosto bassa (circa 9x10 ^ -5).

Negli ultimi esempi le differenze sono piuttosto estreme, il giocatore o vince $ 58 molto spesso, o $ 20231 quasi mai, senza alcuna variazione nel mezzo. L'arte di rendere il gioco avvincente è nel creare più opportunità di vincere con importi variabili. Ciò si ottiene spesso mescolando bobine con diverse probabilità. Quindi, invece di avere ogni bobina
lo stesso numero di ogni simbolo, una bobina potrebbe avere più simboli, o più di un tipo di simbolo, e così via. La formula per calcolare la probabilità è la stessa di prima, ricorda solo di usare i rapporti corretti per ogni bobina. Ad esempio, se si dispone della bobina A con 22 fermate e 3 occorrenze di un simbolo, la bobina B con 26 fermate e 2 occorrenze del simbolo e la bobina C con 20 fermate e 5 occorrenze del simbolo, la formula sarebbe simile alla seguente: (1 / (3/22 x 2/26 x 5/20)) x 95% x $ costo.

E questo è tutto. Spero di non aver fatto troppi errori negli esempi, quindi sarai ancora in grado di trovarlo utile: P

** Una nota sulla notazione, il 95% è identico a 0,95. 32/100 è identico a 0,32, 7/22 è identico a 0,31818 .. ecc.


Sorprendente. Mi hai appena risparmiato un sacco di lavoro. Ho letto molti documenti su come dovrebbero funzionare le slot machine, ma questa risposta me l'ha venduta davvero in parole povere. Grazie!
Stephen,

7

Si desidera che il valore previsto sia 0,95. In termini semplici, questa è la somma di probability * payoutper ogni stato.

Un metodo di forza bruta sarebbe quello di iterare su tutti i 22 ^ 3 stati (supponendo che tu abbia 3 rulli), sommare il pagamento e dividere la somma per 22 ^ 3. Tuttavia, poiché la maggior parte degli stati probabilmente non paga nulla, potrebbe essere più semplice elaborare tutti gli stati che invece pagano.

Ad esempio, se avevi 1 simboli Bell per bobina, quindi la probabilità di

[Bell] [Bell] [Bell]

sarebbe 1/22 ^ 3. E se avessi 2 Ciliegie per bobina, allora la probabilità di

[Cherry] [Cherry] [any]

sarebbe 1/11 ^ 2.


MODIFICA: Quanto sopra ti dice solo come verificare che i pagamenti forniscano il tasso di rendimento desiderato. A titolo di esempio, consideriamo un gioco in cui paghi $ 1 per lanciare 2 monete. Ecco tre schemi di pagamento che danno tutti un tasso di restituzione di 0,95:

  1. Due teste pagano $ 3,80, tutto il resto non paga nulla
  2. Due teste o due code pagano $ 1,90, tutto il resto non paga nulla
  3. Due teste non pagano nulla, tutto il resto paga $ 1,26

Qual è più "divertente"? Dimmelo tu...


Detto questo, nessuna slot machine prodotta negli ultimi decenni gira bob come questa. Se tre campane pagano i jackpot, verranno fuori sproporzionatamente meno, indipendentemente da quanti ce ne siano sulla bobina fisica.

3
Gestisco solo la matematica - renderlo divertente è il lavoro di qualcun altro :)
Celion,

@joe - Sono d'accordo, le campane saranno sulla bobina molto meno del resto dei simboli. @celion Non capisco ancora del tutto. Diciamo che ho i rulli (ne ho 5) e l'utente preme il pulsante per giocare. Prendo i successivi 5 numeri casuali, eseguo i calcoli per trovare le fermate e mostrare i simboli. In che modo la percentuale di pagamento incide sui numeri casuali e sugli arresti? Devo impostare il pagamento con i simboli che si trovano sulla bobina e la quantità di simboli di pagamento alto-> basso contenuti sulla bobina?
Kris.Mitchell,

@ Kris-Mitchell - Forse sto fraintendendo il funzionamento delle slot machine. Supponevo che per ogni possibile risultato, il pagamento fosse fisso. Se i simboli sulla bobina cambiano ad ogni round, la matematica diventa un po 'più difficile, ma dovresti comunque riuscire a capire (offline, con una matita e un foglio di carta) la probabilità di un dato stato. Questo ti dà solo un modo per assicurarti che un insieme di pagamenti fornisca il tasso di rendimento desiderato (medio); ci sono un numero infinito di modi per assegnare i pagamenti dato quel vincolo, quindi spetta a te sceglierne uno "divertente".
Celion,

@celion - Non intendevo guidarti male, e se qualcun altro mi sta leggendo, correggimi se sbaglio, ma il pagamento è fisso. Non credo che i rulli cambino ogni round. Penso che i rulli per le video slot siano semplicemente più grandi di una vera slot machine meccanica. A proposito, credo che mi piacerebbe di più l'opzione 2 o 3. Due è abbastanza rischioso per essere una sfida, in cui puoi fare soldi, pur sapendo che perderai. Tre invece sembrano essere migliori perché sembra che tu abbia più possibilità di vincere.
Kris.Mitchell,

1

Il modo più semplice e affidabile per farlo non è simulare i rulli, ma piuttosto avere un dado interno che sceglie ciò che il giocatore vince e quindi popola il rullo proceduralmente (o ne ha un grande set salvato da qualche parte, ma probabilmente ci vorrà più tempo per rendere).


0

Gli altri non hanno toccato questo bit:

..come assicurare correttamente che la macchina abbia una valutazione di pagamento ..

Se usi numeri completamente casuali, non c'è modo di esserne sicuri. Tuttavia, è possibile mantenere le statistiche dei pagamenti e regolare la probabilità di un pagamento in fase di esecuzione utilizzando un ciclo di feedback .

Se non c'è stato un pagamento da qualche tempo, rendi più probabile la vittoria e viceversa.

Puoi eseguire simulazioni delle esecuzioni (dovrebbero fare un paio di miliardi di iterazioni) per assicurarti che il tuo circuito di feedback funzioni come previsto.


1
La tua soluzione non è necessaria. Un generatore di numeri casuali perfetto (RNG) si avvicinerà alla valutazione esatta dei pagamenti nel tempo. Sebbene sia vero che l'utilizzo della funzione RNG predefinita predefinita non sia realmente accettabile (principalmente a causa della prevedibilità), la soluzione corretta è utilizzare un RNG migliore, ad esempio: en.wikipedia.org/wiki/Random_number_generation#Physical_methods . Inoltre, includendo una logica di gioco non casuale, o "ottimizzando" la valutazione dei pagamenti, come stai suggerendo, è illegale nella maggior parte dei luoghi. Va bene per un sito Web ingannevole, ma un totale non principiante per un'applicazione del mondo reale.
Luke Van Il

1
@lukevanin, è legalmente richiesto in altri luoghi, quindi è davvero un caso di comprensione del contesto.
Peter Taylor,

0

Nota che tutte le risposte finora presuppongono che tu abbia un RNG perfetto con cui lavorare. Un software puro RNG è in realtà uno pseudo-RNG, o PRNG in breve, perché lo stesso valore di input (seed) genererà sempre la stessa sequenza di numeri casuali, quindi un PRNG è intrinsecamente prevedibile.

Certo, è un problema difficile distinguere i RNG "veri" da "pseudo" sul lato client, in particolare con una piccola dimensione del campione, ma c'è una differenza - in un'applicazione in cui sono coinvolti denaro e responsabilità legale, non lo farei correre rischi. Se hai bisogno di un RNG, l'unica cosa peggiore di non avere RNG è avere un RNG rotto senza saperlo, quindi questa è un'area in cui la tua azienda non dovrebbe mai tagliare angoli o imparare al volo.

Esistono buoni algoritmi di PRNG, ma non corrisponderanno mai a una fonte fisica di entropia. Quindi, affinché la matematica funzioni in pratica e in teoria, assicurati di utilizzare il miglior RNG possibile: è nell'interesse della tua azienda, sia legalmente che finanziariamente.


0

Un approccio molto semplice potrebbe essere solo iterare su tutti i possibili risultati degli spin e sommare le vincite combinate, rispetto al totale dei fondi raccolti.

Inizia creando i layout delle ruote, se lo desideri consenti simboli duplicati. Determina i modelli vincenti e i pagamenti che desideri. Esegui il modello della ruota attraverso un algoritmo per determinare il pagamento totale, dividi per i soldi raccolti, questo è il rapporto di pagamento.

Se è troppo alto, aggiungi più spazi vuoti o simboli di pagamento minori, O abbassa il pagamento del modello (cioè tre barre singole possono essere $ 10 o $ 5). Rieseguire l'algoritmo fino a determinare il rapporto di pagamento desiderato.

Ciò consente di mantenere pagamenti di valore pari (non $ 4,58 per un modello vincente, è possibile utilizzare $ 5). Potresti non essere in grado di ottenere un esatto pagamento del 95%, ma con le modifiche puoi avvicinarti.

Ecco un algoritmo di esempio per determinare il rapporto di retribuzione di un layout di ruota:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.