スーパーリノ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)と入力してください。
やっぱりはまりますね。これが仮に設定6だったら以下のようになりました。
設定では上段コインの出現率に違いがあるものの出玉推移の観点では 特殊1枚役の出現率しか違いがないので、いったん通常Aモードに入ってしまえば、設定差はないので、ボーナス中の出玉で設定判別はできません。
通常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
ジャグラーの出玉推移をシミュレーション
今回はマイジャグラー4の設定1と設定6のそれぞれの場合で5000回転させたときの出玉推移のシミュレーション結果をグラフにしたいと思います。
ボーナス確率と子役確率は
https://1geki.jp/700/myj-1.php
を参照します。
プログラミング言語はRを使用します。
コードは以下の通りです。
p <- function(n){
x <- numeric(0)
y <- numeric(0)
a <- 0
b <- 0
repeat {
a <- a + 1 #試行回数
b <- b - 3 #メダル枚数
z <- runif(1)
if (z <= big) b <- b + 312
if *1 b <- b + 104
if *2 b <- b + 7
if *3 b <- b + 2
if *4 b <- b + 3
if *5 b <- b + 15
if *6 b <- b + 10
if *7 b <- b + 2
if *8 b <- b + 2
x[a] <- a
y[a] <- b
if (a > n) break
}
plot(x,y,type = "l")
}
#設定1
big <- 1/287.4
reg <- 1/431.2
grape <- 1/6.35
cherry <- 1/36.03
replay <- 1/7.30
piero <- 1/1024
bell <- 1/1024
centercherry1 <- 1/6553.60
centercherry2 <- 1/6553.60
#設定6
big <- 1/240.9
reg <- 1/240.9
grape <- 1/6.07
cherry <- 1/35.6
replay <- 1/7.30
piero <- 1/1024
bell <- 1/1024
centercherry1 <- 1/6553.60
centercherry2 <- 1/6553.60
コードは以上となります。
最初に設定1で5000回転させた場合のグラフは以下です。
運よくプラス領域で推移してますね。何回もシミュレーションすると調子が悪いときはマイナス5000枚まで一直線です。
次は設定6でシミュレーションしてみます。
安定してプラスですね。何回もシミュレーションするとほとんどが上記と似たようなグラフになりますが、運が悪いときは以下のようになります。
ちなみに設定1でも運がいいと以下のようになります。
おそらくホールでは出てる数少ない台はおそらく低設定でたまたま出てる台でしょうね。
そこらへんの話はおそらく他の人のほうが詳しいでしょう。私はホール関係者でもありませんし。
このブログの目的はあくまでも公式に出ている情報から出玉推移や期待値をシミュレーションするコードなどを載せることでブログを見ている人に勝てる戦略を検証する道具やヒントを与えることです。
今回は以上です。
*1:big < z) && (z <= big + reg
*2:big + reg < z) && (z <= big + reg + grape
*3:big + reg + grape < z) && (z <= big + reg + grape + cherry
*4:big + reg + grape + cherry < z) && (z <= big + reg + grape + cherry + replay
*5:big + reg + grape + cherry + replay < z) && (z <= big + reg + grape + cherry + replay + piero
*6:big + reg + grape + cherry + replay + piero < z) && (z <= big + reg + grape + cherry + replay + piero + bell
*7:big + reg + grape + cherry + replay + piero + bell < z) && (z <= big + reg + grape + cherry + replay + piero + bell + centercherry1
*8:big + reg + grape + cherry + replay + piero + bell + centercherry1 < z) && (z <= big + reg + grape + cherry + replay + piero + bell + centercherry1 + centercherry2
80%ループをシミュレーション
凱旋で天井ループを狙って打っている方は多いのではないでしょうか?
80%ループの威力をシミュレーションで確認します。
R言語のコード
maxroup <- function(n) {
e <- 0
repeat {
e <- e + 1
z <- 1
repeat {
x <- runif(1)
if (x < 0.8) z <- z + 1 # ループ回数
if (x > 0.8) break
}
cat(z,",")
if (e > n) break
}
}
コードは以上です。20回試行した場合のループ回数は
4 ,1 ,5 ,4 ,2 ,3 ,8 ,4 ,6 ,3 ,4 ,4 ,2 ,5 ,6 ,2 ,8 ,1 ,1 ,9
となりました。半分以上は5回もいかないですね。
逆に4回以上続くケースも半分以上ありますね。
あくまでも80%ループを引ける確率が50%なので、確定役とか諸々考えても、天井狙いはゲーム数750はまりは最低でも欲しいですね。750でも少ないくらいですがね。
おまけですが、ある解析サイトによるとオキドキの超ドキドキモードの継続率は91%以上なのですが、仮に91%で20回シミュレーションしたら
18 ,11 ,7 ,6 ,29 ,2 ,18 ,10 ,3 ,28 ,25 ,2 ,4 ,10 ,1 ,7 ,22 ,8 ,11 ,1
でした。さすがに91%だと10回以上継続してくれる場合も多いです。
ミリオンゴッド神々の凱旋 設定別初当たり確率から当選回数をシミュレーション
■GOD
全設定共通:1/8192.0
■赤7
全設定共通:1/5461.0
□AT初当り(合算)
設定1:1/452.8
設定2:1/415.6
設定3:1/424.4
設定4:1/333.0
設定5:1/325.9
設定6:1/253.5
http://sp.pachinkoslot.jp/open/machinespec.php?t=s&mc=1628
上に紹介されたサイトからゴッドゲーム初当たり回数をR言語を用いて設定別に20回試行してみます。天井は1480+前兆ですので、1480を超えた場合は一律に1480とします。
R言語のコード
s1 <- 1/452.8
s2 <- 1/415.6
s3 <- 1/424.4
s4 <- 1/333.0
s5 <- 1/325.9
s6 <- 1/253.5
sg <- 1/5461.0
pg <- 1/8192.0
y <- 0
gg <- function(n, s, t) {
e <- 0
repeat {
e <- e + 1
repeat {
x <- runif(1)
sgg <- runif(1)
pgg <- runif(1)
y <- y + 1
if (x < s) break
if (sgg < sg) cat("SGG","-")
if (sgg < sg) break
if (pgg < pg) cat("GOD","-")
if (pgg < pg) break
if (y > 1480-t) break
}
if (y > 1480-t) y <- 1480-t
cat(y,",")
y <- 0
if (e > n) break
}
}
コードは以上ですが、関数に変数tを入れた理由は後に何ゲーム目から始めるべきかシミュレーションした記事を書く予定だからです。
それでは設定別に初当たり当選回数を各20回シミュレーションします。
設定1の場合
SGG -36 ,115 ,61 ,1480 ,116 ,327 ,279 ,163 ,250 ,23 ,29 ,1284 ,698 ,53 ,1363 ,150 ,SGG -484 ,200 ,744 ,988
一番最初の「SGG -36」というのは36ゲーム目にSGGで当選したという意味です。
同様に例えばGOD揃いで100ゲーム目に当選した場合は「GOD -100」と書きます。
設定2の場合
3 ,275 ,434 ,181 ,178 ,SGG -9 ,692 ,107 ,GOD -358 ,51 ,6 ,1425 ,172 ,920 ,621 ,15
実際には前兆から当たるので一番最初の3とか最後の15とかはあり得ないのですが、そこらへんの部分は実機に合わせてさらに詳細なデータが必要ですので、今回は無視します。
設定3の場合
450 ,182 ,218 ,73 ,186 ,1159 ,280 ,453 ,37 ,235 ,393 ,870 ,916 ,328 ,809 ,SGG -640 ,118 ,SGG -544 ,26 ,486
設定4の場合
367 ,1014 ,896 ,134 ,1259 ,185 ,294 ,66 ,217 ,GOD -70 ,209 ,294 ,246 ,418 ,GOD -277 ,GOD -371 ,1336 ,185 ,144 ,546
GODが初当たりで3回も来てますが、たまたまです。こういうことも運がよければあります。
設定5の場合
295 ,501 ,416 ,334 ,SGG -8 ,150 ,191 ,727 ,191 ,21 ,164 ,183 ,9 ,334 ,185 ,228 ,GOD -265 ,727 ,437 ,24
設定6の場合
188 ,225 ,GOD -115 ,26 ,323 ,1 ,104 ,237 ,291 ,356 ,487 ,599 ,26 ,275 ,298 ,537 ,74 ,217 ,47 ,145
設定1と6を見比べてみると、3桁後半以上での当たりが6だとほとんどなく、設定1でも運よく天井に刺さることはまれだということです。
天井直前で当たっちゃった不運なことがよくありますが、普通にありえることだというはなしです。ホールのデータを見た感じだとどこもほとんど設定1だと考えたほうがシミュレーション結果を見てもしっくりきます。
次回の記事では天井80%ループの回数をシミュレーションした記事を書きたいと思います。