スロット期待値の研究

スロットで期待値を算出するためのブログです。

スーパーリノmax 出玉推移をシミュレーション

設定1の場合のスーパーリノmaxの出玉推移をプログラミング言語Rでシミュレーションします。

コードは以下の通りです。自分でシミュレーションする場合は以下のコードをRのスプリクト上にコピーペーストしてください。

#通常Bモード

preplay <- 1/3
coin <- 1/204.8
pct <- 1/3
pone <- 1/3.2

#通常Aモード
centerbell <- 1/138.9
underbell <- 1/138.9
qreplay <- 1/8.1
ct <- 1/29.2
big <- 1/46.2 #単独ビッグ確率
reg <- 1/86.4 #単独レギュラー確率
coin <- 1/204.8
qone <- 1/3.2

 

#同時当選確率
breplay <- 1/87.4
bcenterbell <- 1/264.3
bunderbell <- 1/153.8
bcoin <- 1/306.2
reachreplay <- 1/72.8
bspecialone <- 1/7281.8
bone <- 1/168.9

 

#特殊1枚役確率 
specialone <- 1/172 #設定1

 

p <- function(n){
x <- numeric(0)
y <- numeric(0)
a <- 0
b <- 0
 c <- 1

repeat{
while (c == 1){
a <- a + 1 #試行回数
b <- b - 3 #メダル枚数
 z <- runif(1)
if (z <= preplay) b <- b + 3 #リプレイ
if *1 b <- b + 3 #コイン
if *2 b <- b + 1 #一枚役
w <- runif(1)
if *3 b <- b + 1 #特殊1枚役
x[a] <- a
y[a] <- b
if *4 c <- 2  #トマト揃い通常Aモードに移行
if (c == 2) break
if (a > n) break
}

while (c == 2){
a <- a + 1 #試行回数
b <- b - 3 #メダル枚数
z <- runif(1)
w <- runif(1)
if *5 c <- 1
if *6 b <- b + 240 #単独ビッグ確率
if *7 cat("BIG-",a,"\n")
if *8 b <- b + 110 #単独レギュラー確率
if *9 cat("REG-",a,"\n")
if *10 b <- b + 237
if *11 cat("BIG-",a,"\n")
if *12 b <- b + 107
if *13 cat("REG-",a,"\n")
if *14 b <- b + 1
if *15 b <- b + 237
if *16 cat("BIG-",a,"\n")
if *17 b <- b + 107
if *18 cat("REG-",a,"\n")
if *19 b <- b + 3
if *20 b <- b + 237
if *21 cat("BIG-",a,"\n")
if *22 b <- b + 107
if *23 cat("REG-",a,"\n")
if *24 b <- b + 1
if *25 b <- b + 237
if *26 cat("BIG-",a,"\n")
if *27 b <- b + 107
if *28 cat("REG-",a,"\n")
if *29 b <- b + 3
if *30 b <- b + 237
if *31 cat("BIG-",a,"\n")
if *32 b <- b + 107
if *33 cat("REG-",a,"\n")
if *34 b <- b + 13
if *35 b <- b + 237
if *36 cat("BIG-",a,"\n")
if *37 b <- b + 107
if *38 cat("REG-",a,"\n")
if *39 b <- b + 13
if *40 b <- b + 240
if *41 cat("BIG-",a,"\n")
if *42 b <- b + 110
if *43 cat("REG-",a,"\n")
x[a] <- a
y[a] <- b
if (c == 1) break
if (a > n) break
}
if (a > n) break
}
plot(x,y,type = "l")
}

 

コードは以上です。

いろいろなサイトを見たのですが、一枚役の確率がわからず、0枚と1枚の合算の確率は1/1.6と書いてあったので、2で割って1/3.2としました。仮に確率に多少の誤差があっても大して結果に影響は出ません。

例えば3000回回したときの出玉推移を見たい場合は下の画像のようにp(3000)と入力してください。

f:id:b092203w:20190516085643p:plain

Rのスクリプトと出玉推移のシミュレーション結果

やっぱりはまりますね。これが仮に設定6だったら以下のようになりました。

f:id:b092203w:20190516091326p:plain

設定6でシミュレーション

設定では上段コインの出現率に違いがあるものの出玉推移の観点では 特殊1枚役の出現率しか違いがないので、いったん通常Aモードに入ってしまえば、設定差はないので、ボーナス中の出玉で設定判別はできません。

f:id:b092203w:20190516100737p:plain

設定6でもボーナスに入れない時も

通常Aから通常Bに転落する出目が出現する確率は1/29.2の1/2ですから1/58.4なので、大体平均60回転で出現するので案外すぐ落ちたりします。シミュレーション結果を見る限りでは300000回転もさせれば設定差がはっきりわかりますが、さすがに3000回転ではわからないというのが私の感想です。

以上です。

*1:preplay < z) && (z <= preplay + coin

*2:preplay + coin < z) && (z <= preplay + coin + pone

*3:preplay + coin + pone < z) && (z <= preplay + coin + pone + specialone) && (w > pct

*4:preplay + coin + pone < z) && (z <= preplay + coin + pone + specialone) && (w < pct

*5:z < ct) && (w < 1/2

*6:ct < z) && (z <= ct + big

*7:ct < z) && (z <= ct + big

*8:ct + big < z) && (z <= ct + big + reg

*9:ct + big < z) && (z <= ct + big + reg

*10:ct + big + reg < z) && (z <= ct + big + reg + bspecialone) && (w < 2/3

*11:ct + big + reg < z) && (z <= ct + big + reg + bspecialone) && (w < 2/3

*12:ct + big + reg < z) && (z <= ct + big + reg + bspecialone) && (2/3 <= w

*13:ct + big + reg < z) && (z <= ct + big + reg + bspecialone) && (2/3 <= w

*14:ct + big + reg < z) && (z <= ct + big + reg + specialone

*15:ct + big + reg + specialone < z) && (z <= ct + big + reg + specialone + bcoin) && (w < 9/10

*16:ct + big + reg + specialone < z) && (z <= ct + big + reg + specialone + bcoin) && (w < 9/10

*17:ct + big + reg + specialone < z) && (z <= ct + big + reg + specialone + bcoin) && (9/10 <= w

*18:ct + big + reg + specialone < z) && (z <= ct + big + reg + specialone + bcoin) && (9/10 <= w

*19:ct + big + reg + specialone < z) && (z <= ct + big + reg + specialone + coin

*20:ct + big + reg + specialone + coin < z) && (z <= ct + big + reg + specialone + coin + bone) && (w < 2/3

*21:ct + big + reg + specialone + coin < z) && (z <= ct + big + reg + specialone + coin + bone) && (w < 2/3

*22:ct + big + reg + specialone + coin < z) && (z <= ct + big + reg + specialone + coin + bone) && (2/3 <= w

*23:ct + big + reg + specialone + coin < z) && (z <= ct + big + reg + specialone + coin + bone) && (2/3 <= w

*24:ct + big + reg + specialone + coin < z) && (z <= ct + big + reg + specialone + coin + qone

*25:ct + big + reg + specialone + coin + qone < z) && (z <= ct + big + reg + specialone + coin + qone + breplay) && (w < 2/3

*26:ct + big + reg + specialone + coin + qone < z) && (z <= ct + big + reg + specialone + coin + qone + breplay) && (w < 2/3

*27:ct + big + reg + specialone + coin + qone < z) && (z <= ct + big + reg + specialone + coin + qone + breplay) && (2/3 <= w

*28:ct + big + reg + specialone + coin + qone < z) && (z <= ct + big + reg + specialone + coin + qone + breplay) && (2/3 <= w

*29:ct + big + reg + specialone + coin + qone < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay

*30:ct + big + reg + specialone + coin + qone + qreplay < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + bcenterbell) && (w < 2/3

*31:ct + big + reg + specialone + coin + qone + qreplay < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + bcenterbell) && (w < 2/3

*32:ct + big + reg + specialone + coin + qone + qreplay < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + bcenterbell) && (2/3 <= w

*33:ct + big + reg + specialone + coin + qone + qreplay < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + bcenterbell) && (2/3 <= w

*34:ct + big + reg + specialone + coin + qone + qreplay < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell

*35:ct + big + reg + specialone + coin + qone + qreplay + centerbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + bunderbell) && (w < 2/3

*36:ct + big + reg + specialone + coin + qone + qreplay + centerbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + bunderbell) && (w < 2/3

*37:ct + big + reg + specialone + coin + qone + qreplay + centerbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + bunderbell) && (2/3 <= w

*38:ct + big + reg + specialone + coin + qone + qreplay + centerbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + bunderbell) && (2/3 <= w

*39:ct + big + reg + specialone + coin + qone + qreplay + centerbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell

*40:ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell + reachreplay) && (w < 2/3

*41:ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell + reachreplay) && (w < 2/3

*42:ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell + reachreplay) && (2/3 <= w

*43:ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell < z) && (z <= ct + big + reg + specialone + coin + qone + qreplay + centerbell + underbell + reachreplay) && (2/3 <= w