スロット期待値の研究

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

沖ドキ 32ゲーム以内の当選は天国即抜けとみるべきか通常モードでの当選とみるべきか

f:id:b092203w:20190610192050p:plain

RBの3ゲームを天国単発とみるべきか通常モードでの当選とみるべきか

上の画像はデータロボセブン様から引用した某ホールの沖ドキの履歴です。

ここで問題になってくるのが3ゲームで当選したRBで、これを天国単発とみるべきか通常モードでの当選とみるべきかで、天国スルー回数が天国単発なら1回か通常当選なら4回で大きく違ってきます。

そこで今回は設定1で32ゲーム以内にボーナス解除した場合に天国と通常それぞれに滞在している確率を求めました。

確率を求めるときに使用したコードは以下の通りです。

#1ゲーム目にビッグボーナスに当選した時に天国に滞在する確率

rBB1 <- function(){
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
g <- 0.1250 #スイカ告知(6)
h <- 0.0625 #チェリー告知(6)
i <- 0.0183 #RB告知(6)
j <- 0.0427 #BB告知(6)
z <- (1 - b - c - d - e - f)*j
g <- 0.0183 #スイカ告知(1)
h <- 0.0092 #チェリー告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
w <- (1 - b - c - d - e - f)*j
cat(z/(z+w),"\n")
}

#1ゲーム目にレギュラーボーナスに当選した時に天国に滞在する確率

rRB1 <- function(){
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
g <- 0.1250 #スイカ告知
h <- 0.0625 #チェリー告知
i <- 0.0183 #RB告知
j <- 0.0427 #BB告知
z <- (1 - b - c - d - e - f)*i
g <- 0.0183 #スイカ告知(1)
h <- 0.0092 #チェリー告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
w <- (1 - b - c - d - e - f)*i
cat(z/(z+w),"\n")
}

#2ゲーム目から31ゲーム目にビッグボーナスに当選した時に天国に滞在する確率

rBB <- function(){
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
for(k in 2:31){
g <- 0.1250 #スイカ告知(6)
h <- 0.0625 #チェリー告知(6)
i <- 0.0183 #RB告知(6)
j <- 0.0427 #BB告知(6)
x <- (1 - b - c - d - e - f)*(1 - 2*i-2*j)
y <- (1 - b - c - d - e - f)*j
v <- b * h
s <- c * g
m <- b * (1 - h)
n <- c * (1 - 2 * g)
z <- (x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + v + s)
g <- 0.0183 #スイカ告知(1)
h <- 0.0092 #チェリー告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
x <- (1 - b - c - d - e - f)*(1 - 2*i-2*j)
y <- (1 - b - c - d - e - f)*i
v <- b * h
s <- c * g
m <- b * (1 - h)
n <- c * (1 - g)
w <- (x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + v + s)
cat(z/(z+w),"\n")
}
}

#2ゲーム目から31ゲーム目にレギュラーボーナスに当選した時に天国に滞在する確率

rRB <- function(n){
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
for(k in 2:n){
g <- 0.1250 #スイカ次告知
h <- 0.0625 #チェリー次告知
i <- 0.0183 #RB告知
j <- 0.0427 #BB告知
x <- (1 - b - c - d - e - f)*(1 - 2*i-2*j)#ハズレorリプレイ
y <- (1 - b - c - d - e - f)*i
m <- b * (1 - h)
n <- c * (1 - 2 * g)
z <- (x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + c * g)
g <- 0.0183 #スイカ次告知(1)
h <- 0.0092 #チェリー次告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
x <- (1 - b - c - d - e - f)*(1 - 2*i-2*j)
y <- (1 - b - c - d - e - f)*i
m <- b * (1 - h)
n <- c * (1 - 2 * g)
w <- (x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + c * g)
cat(z/(z+w),"\n")
}
}

#32ゲーム目にビッグボーナスに当選した時に天国に滞在する確率

rBB32 <- function(){
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
g <- 0.1250 #スイカ告知
h <- 0.0625 #チェリー告知
i <- 0.0183 #RB告知
j <- 0.0427 #BB告知
z <- (1 - b - c - d - e - f)*j
for(k in 2:31){
x <- (1 - b - c - d - e - f)*(1 - 2*i-2*j)
y <- (1 - b - c - d - e - f)*j
v <- b * h
s <- c * g
m <- b * (1 - h)
n <- c * (1 - 2 * g)
cat((x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + v + s),"\n")
z <- z + (x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + c * g)
}
z <- 1 - z
cat(z,"\n")
g <- 0.0183 #スイカ次告知(1)
h <- 0.0092 #チェリー次告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
w <- (x + m + n)^31*y + (x + m + n)^30 * (y + v + s)
cat(z/(z+w),"\n")
}

#32ゲーム目にレギュラーボーナスに当選した時に天国に滞在する確率

rRB32 <- function(){
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
g <- 0.1250 #スイカ告知
h <- 0.0625 #チェリー告知
i <- 0.0183 #RB告知
j <- 0.0427 #BB告知
z <- (1 - b - c - d - e - f)*i
for(k in 2:31){
x <- (1 - b - c - d - e - f)*(1 - 2*i-2*j)
y <- (1 - b - c - d - e - f)*i
m <- b * (1 - h)
n <- c * (1 - 2 * g)
cat((x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + c * g),"\n")
z <- z + (x + m + n)^(k - 1)*y + (x + m + n)^(k - 2)*(y + c * g)
}
z <- 1 - z
cat(z,"\n")
g <- 0.0183 #スイカ次告知(1)
h <- 0.0092 #チェリー次告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
w <- (x + m + n)^31*y + (x + m + n)^30 * (y + c * g)
cat(z/(z+w),"\n")
}

 

コードは以上です。結果は以下の通りです。ただし、確定役、確定チェリー、中段チェリーでボーナス解除する確率は除いています。

f:id:b092203w:20190611015053j:plain

設定1での32ゲーム以内に当選した時の通常と比較した各ゲーム数での天国滞在確率

天国滞在時と通常時とではビッグとレギュラーが当選する確率の比率がそれぞれ異なるため、上の画像のように分けています。

注目してもらいたいのはRBの27ゲームから31ゲームまでの部分とRB、BB両方の32ゲーム目での天国で当選した確率です。

27ゲーム目から31ゲーム目までにRBで当選した場合は天国ではなく通常モードで当選した確率のほうが高いのです。これを知っておくと例えば以下の画像の履歴はチャンスに見えてくるのではないでしょうか?

 

f:id:b092203w:20190611121918p:plain

29ゲームのRBが通常当選なら5スルー

もう一つ、32ゲーム目ジャストでの当選も天国滞在での天井当選が濃厚ということも注目していただきたいです。こちらは逆に天国抜けと判断でき一つの区切りとできるので、間違えて通常からの天国スルーと判断しないように注意してください。

長くなりましたが、今回は以上です。

 

 

 

 

 

 

 

 

沖ドキ モード別初当たり当選ゲーム数をシミュレーション

沖ドキはコイン持ちが悪いので、皆さんが遊戯してるときは何ゲーム目で当選するかが気になるところだと思います。

そこで今回はモード別に設定1では何ゲーム目に当選するのかシミュレーションします。前回の記事では通常Bの見つけ方について次からは書くということを言ったのですが、それを考えるにあたって今回のシミュレーションは必要になりますので、しっかり一歩一歩段階を踏んで沖ドキの打ち方、期待値の取り方を研究していきたいと思います。

 

#子役確率
a <- 1/5.05 #リプレイ
b <- 1/32.13 #角チェリー
c <- 1/128.00 #スイカ
d <- 1/8192.00 #確定役
e <- 1/10922.67 #確定チェリー
f <- 1/32768.00 #中段チェリー
#通常AB
g <- 0.0183 #スイカ告知(1)
h <- 0.0092 #チェリー告知(1)
i <- 0.0007 #RB告知(1)
j <- 0.0009 #BB告知(1)
k <- 1000 #天井

#沖ドキ初当たり当選ゲーム数
l <- function(n){
q <- 0
repeat{
q <- q + 1
p <- 0
repeat{
p <- p + 1
z <- runif(1)
if *1 cat(p,"-RB", "\n")
if *2 cat(p,"-BB", "\n")
if (p >= k) break
if (z <= f) cat(p + 1,"-中段チェリー", "\n")
if *3 cat(p + 1,"-確定チェリー", "\n")
if *4 cat(p + 1,"-確定役", "\n")
if (z <= d + e + f) break
w <- runif(1)
if *5 cat(p + 1,"-スイカRB告知", "\n")
if *6 break
if *7 cat(p + 1,"-角チェリーRB告知", "\n")
if *8 break
if *9 cat(p ,"-RB即告知", "\n")
if *10 break
if *11 cat(p ,"-BB即告知", "\n")
if *12 break
if *13 && (w > (1 - (i + j)))) cat(p + 1,"-BB次告知", "\n")
if *14 && (w > (1 - (i + j)))) break
}
if (q >= n) break
}
}

 

通常以外のモードでシミュレーションする場合はスイカ告知確率、角チェリー告知確率とRB告知確率、BB告知確率と天井ゲーム数が通常A,Bモードとはそれぞれ違うので、g,h,i,j,kの値を以下のように入れてください。

#引き戻し
g <- 0.0648 #スイカ告知(6)
h <- 0.0420 #チェリー告知(6)
i <- 0.0026 #RB告知(6)
j <- 0.0027 #BB告知(6)
k <- 200 #天井
#保障/天国/ドキドキ/超ドキ
g <- 0.1631 #スイカ告知(6)
h <- 0.0816 #チェリー告知(6)
i <- 0.0183 #RB告知(6)
j <- 0.0427 #BB告知(6)
k <- 32 #天井
#チャンス
g <- 0.0778 #スイカ告知(6)
h <- 0.0504 #チェリー告知(6)
i <- 0.0031 #RB告知(6)
j <- 0.0033 #BB告知(6)
k <- 200 #天井

各モードで20回当選した時の各当選ゲーム数とその契機は以下の画像のようになりました。

f:id:b092203w:20190604131057p:plain

設定1の通常Aと通常Bモードで20回当選した時の各当選ゲーム数とその契機

f:id:b092203w:20190604133500p:plain

こちらは設定1の引き戻しモード

f:id:b092203w:20190604134140p:plain

設定1の保証、天国、ドキドキ、超ドキモード

f:id:b092203w:20190604131044p:plain

設定1のチャンスモード

前回の記事でも言いましたが、確率というのは実践では大抵偏ります。確率1/100でも3回目に当たったり、500回やっても当たらなかったりするのがリアルであって、50回目に当たって、120回目に当たって、次は90回目に当たるなんて綺麗なものではないというのがシミュレーションしてみると実感できます。ホールで履歴見ても前回はすぐ当たったのに、次は天井までハマったというのは相当数の方が経験してるかと思います。
今回は以上となります。この記事を見てくださった皆さんもご自分でシミュレーションしてみてください。

 

 

 

 

 

 

 

*1:p >= k) && (z <= 0.4

*2:p >= k) && (z > 0.4

*3:z > f) && (z <= e + f

*4:z > e + f) && (z <= d + e + f

*5:z > d + e + f) && (z <= c + d + e + f) && (w < g

*6:z > d + e + f) && (z <= c + d + e + f) && (w < g

*7:z > d + e + f) && (z <= c + d + e + f) && (w > (1 - g))) cat(p + 1,"-スイカBB告知", "\n")
if ((z > d + e + f) && (z <= c + d + e + f) && (w > (1 - g))) break
if ((z > c + d + e + f) && (z <= b + c + d + e + f) && (w < h

*8:z > c + d + e + f) && (z <= b + c + d + e + f) && (w < h

*9:z > c + d + e + f) && (z <= b + c + d + e + f) && (w > (1 - h))) cat(p + 1,"-角チェリーBB告知", "\n")
if ((z > c + d + e + f) && (z <= b + c + d + e + f) && (w > (1 - h))) break
if ((z > b + c + d + e + f) && (w < i

*10:z > b + c + d + e + f) && (w < i

*11:z > b + c + d + e + f) && (w > (1- i))) cat(p + 1,"-RB次告知", "\n")
if ((z > b + c + d + e + f) && (w > (1- i))) break
if ((z > b + c + d + e + f) && (w > i) && (w <= i + j

*12:z > b + c + d + e + f) && (w > i) && (w <= i + j

*13:z > b + c + d + e + f) && (w <= (1- i

*14:z > b + c + d + e + f) && (w <= (1- i

沖ドキ 設定1でモード移行の推移をシミュレーション

沖ドキの設定1でモード移行の推移をシミュレーションするコードをお見せします。

ご自分で試されたい方は以下のコードをRにコピーペーストしてください。

設定1の場合のコードは以下の通りです。言語はRです。

#設定1
#通常A(1)
AA <- 0.6406
AB <- 0.25
AT <- 0.1016
AD <- 0.0078

#通常B(2)
BB <- 0.4922
BT <- 0.4219
BD <- 0.0859

#天国モード(3)
TA <- 0.1328
TB <- 0.0391
TH <- 0.0781
TT <- 0.7422
TD <- 0.0078

#ドキドキモード(4)
DV <- 0.1797
DD <- 0.8164
DS <- 0.0039

#引き戻し(5)
HA <- 0.5000
HB <- 0.3359
HT <- 0.1563
HD <- 0.0078

#スーパードキドキモード(6)
SV <- 0.0937
SS <- 0.9063

#保障モード(7)
VA <- 0.6523
VB <- 0.1016
VH <- 0.2031
VT <- 0.0391
VD <- 0.0039

 

i <- function(n){
e <- 0
m <- 1
cat("A")
repeat{
if(m == 1) z <- c(rep(1, AA*10000), rep(2, AB*10000), rep(3, AT*10000),rep(4,AD*10000))
if(m == 1) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 1) cat("A")
if (m == 2) cat("B")
if (m == 2) break
if (m == 3) cat("T")
if (m == 3) break
if (m == 4) cat("D")
if (m == 4) break
}
if (m == 2) z <- c(rep(2, BB*10000), rep(3, BT*10000),rep(4,BD*10000))
if (m == 2) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 2) cat("B")
if (m == 3) cat("T")
if (m == 3) break
if (m == 4) cat("D")
if (m == 4) break
}
if (m == 3) z <- c(rep(1, TA*10000),rep(2, TB*10000), rep(3, TT*10000),rep(4, TD*10000),rep(5, TH*10000))
if (m == 3) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 1) cat("A")
if (m == 1) break
if (m == 2) cat("B")
if (m == 2) break
if (m == 3) cat("T")
if (m == 4) cat("D")
if (m == 4) break
if (m == 5) cat("H")
if (m == 5) break
}
if (m == 4) z <- c(rep(4, DD*10000), rep(6, DS*10000),rep(7, DV*10000))
if (m == 4) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 4) cat("D")
if (m == 6) cat("S")
if (m == 6) break
if (m == 7) cat("V")
if (m == 7) break
}
if (m == 5) z <- c(rep(1, HA*10000), rep(2, HB*10000),rep(3, HT*10000),rep(4, HD*10000))
if (m == 5) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 1) cat("A")
if (m == 1) break
if (m == 2) cat("B")
if (m == 2) break
if (m == 3) cat("T")
if (m == 3) break
if (m == 4) cat("D")
if (m == 4) break
}
if (m == 6) z <- c(rep(6,SS*10000), rep(7, SV*10000))
if (m == 6) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 6) cat("S")
if (m == 7) cat("V")
if (m == 7) break
}

if (m == 7) z <- c(rep(1, VA*10000), rep(2, VB*10000),rep(3, VT*10000),rep(4, VD*10000),rep(5, VH*10000))
if (m == 7) repeat{
e <- e + 1
if (e > n) cat("\n")
if (e > n) break
m <- z[sample(1:10000,1)]
if (m == 1) cat("A")
if (m == 1) break
if (m == 2) cat("B")
if (m == 2) break
if (m == 3) cat("T")
if (m == 3) break
if (m == 4) cat("D")
if (m == 4) break
if (m == 5) cat("H")
if (m == 5) break
}
if (e > n) break
}
}

 

コードは以上です。ちなみにチェリーとスイカから上がった場合の移行率は含まれていないので、実際はもう少し甘目です。

 

f:id:b092203w:20190602024557p:plain

設定1で70回モード移行した場合の推移

上の画像ではRで70回モード移行した場合の推移で、Aというのは通常A、Bは通常B、Tは天国、Dはドキドキ、Hは引き戻し、Vは保証モードをさしています。上の画像では出てきませんでしたが、実際にRでシミュレーションした時にSが出てきたら、Sはスーパードキドキです。

上の画像は、最初は通常Aで始まり、次は一発で天国に上がり、即落ちしてまた通常Aが2回続いた後に天国7連して通常Aに転落、というような流れになっています。

案外通常Aから天国に上がるケースも少なくありませんが、5回、6回はまってるところもありますよね。

シミュレーションしてみると、AからAに移行する確率は約64%だから2回3回ハマれば上がると思いきや、実際は1発で上がったり、4回も5回もはまっていて実データは理論値よりもかなり汚くて偏っていることが見て取れます。Bから天国に上がるのも同様で、こちらはAよりは偏ってませんが、それでも2回ハマっている(”BBB"となっている箇所)のもちらほらですね。

沖ドキではいかにAを打たずにBを打つのが大事ですが、次回以降の記事ではではどうやって実際にはBを見つけるのか書いていきたいと思います。

f:id:b092203w:20190602103138p:plain

Bでも8回ハマります。怖い!

 

 

スーパーリノ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

ジャグラーの出玉推移をシミュレーション

今回はマイジャグラー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回転させた場合のグラフは以下です。

f:id:b092203w:20190413003104p:plain

設定1で5000回転させた場合のシミュレーション結果

運よくプラス領域で推移してますね。何回もシミュレーションすると調子が悪いときはマイナス5000枚まで一直線です。

次は設定6でシミュレーションしてみます。

f:id:b092203w:20190413003839p:plain

設定6で5000回転させた場合の出玉推移

安定してプラスですね。何回もシミュレーションするとほとんどが上記と似たようなグラフになりますが、運が悪いときは以下のようになります。

f:id:b092203w:20190413004241p:plain

設定6のグラフです。信じられますか?

ちなみに設定1でも運がいいと以下のようになります。

f:id:b092203w:20190413004711p:plain

設定1のシミュレーション結果です。設定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%ループの回数をシミュレーションした記事を書きたいと思います。