見出し画像

シミュレーションにより墓地退化の最適な構築を探索する②


先日載せた記事では、残り枠31枚のときのコンボ成功確率が最も高くなるコンボパーツの配分をシミュレーションにより求めました。

そこで今回は、残り枠数が28~36枚となるそれぞれの場合について、最適な配分を示します。最後に残り枠数の間でその確率を比較します。

今回も10万回のシミュレーションにしています。求めたのは先攻4ターン目でのコンボ成功確率です。パーツの配分の表記の仕方は、上にリンクを乗せた記事と同様です。

--------------------------------------------------------------------------------------

残り枠数28枚

#28
r1 <- res(100000,5,7,7,7,7)
r2 <- res(100000,5,8,7,7,6)
r3 <- res(100000,5,9,7,6,6)
r4 <- res(100000,5,10,6,6,6)
r5 <- res(100000,5,11,6,6,5)
r6 <- res(100000,5,12,6,5,5)
r7 <- res(100000,5,13,5,5,5)
x <- c(7:13)
y <- c(r1,r2,r3,r4,r5,r6,r7)
plot(x,y)

画像1

残り枠数29枚

#29
r1 <- res(100000,5,8,7,7,7)
r2 <- res(100000,5,9,7,7,6)
r3 <- res(100000,5,10,7,6,6)
r4 <- res(100000,5,11,6,6,6)
r5 <- res(100000,5,12,6,6,5)
r6 <- res(100000,5,13,6,5,5)
r7 <- res(100000,5,14,5,5,5)

x <- c(8:14)
y <- c(r1,r2,r3,r4,r5,r6,r7)
plot(x,y)

画像2

残り枠数30枚

#30
r1 <- res(100000,5,8,8,7,7)
r2 <- res(100000,5,9,7,7,7)
r3 <- res(100000,5,10,7,7,6)
r4 <- res(100000,5,11,7,6,6)
r5 <- res(100000,5,12,6,6,6)
r6 <- res(100000,5,13,6,6,5)
r7 <- res(100000,5,14,6,5,5)

x <- c(8:14)
y <- c(r1,r2,r3,r4,r5,r6,r7)
plot(x,y)

画像3

残り枠数31枚

#31
r1 <- res(100000,5,8,8,8,7)
r2 <- res(100000,5,9,8,7,7)
r3 <- res(100000,5,10,7,7,7)
r4 <- res(100000,5,11,7,7,6)
r5 <- res(100000,5,12,7,6,6)
r6 <- res(100000,5,13,6,6,6)
r7 <- res(100000,5,14,6,6,5)

x <- c(8:14)
y <- c(r1,r2,r3,r4,r5,r6,r7)
plot(x,y)

画像4

残り枠数32枚

#32
r1 <- res(100000,5,8,8,8,8)
r2 <- res(100000,5,9,8,8,7)
r3 <- res(100000,5,10,8,7,7)
r4 <- res(100000,5,11,7,7,7)
r5 <- res(100000,5,12,7,7,6)
r6 <- res(100000,5,13,7,6,6)
r7 <- res(100000,5,14,6,6,6)

x <- c(8:14)
y <- c(r1,r2,r3,r4,r5,r6,r7)
plot(x,y)

画像5

残り枠数33枚

#33
r1 <- res(100000,5,9,8,8,8)
r2 <- res(100000,5,10,8,8,7)
r3 <- res(100000,5,11,8,7,7)
r4 <- res(100000,5,12,7,7,7)
r5 <- res(100000,5,13,7,7,6)
r6 <- res(100000,5,14,7,6,6)
r7 <- res(100000,5,15,6,6,6)
r8 <- res(100000,5,16,6,6,5)

x <- c(9:16)
y <- c(r1,r2,r3,r4,r5,r6,r7,r8)
plot(x,y)

画像6

残り枠数34枚

#34
r1 <- res(100000,5,9,9,8,8)
r2 <- res(100000,5,10,8,8,8)
r3 <- res(100000,5,11,8,8,7)
r4 <- res(100000,5,12,8,7,7)
r5 <- res(100000,5,13,7,7,7)
r6 <- res(100000,5,14,7,7,6)
r7 <- res(100000,5,15,7,6,6)
r8 <- res(100000,5,16,6,6,6)

x <- c(9:16)
y <- c(r1,r2,r3,r4,r5,r6,r7,r8)
plot(x,y)

画像7

残り枠数35枚

#35
r1 <- res(100000,5,9,9,9,8)
r2 <- res(100000,5,10,9,8,8)
r3 <- res(100000,5,11,8,8,8)
r4 <- res(100000,5,12,8,8,7)
r5 <- res(100000,5,13,8,7,7)
r6 <- res(100000,5,14,7,7,7)
r7 <- res(100000,5,15,7,7,6)
r8 <- res(100000,5,16,7,6,6)

x <- c(9:16)
y <- c(r1,r2,r3,r4,r5,r6,r7,r8)
plot(x,y)

画像8

残り枠数36枚

#36
r1 <- res(100000,5,9,9,9,9)
r2 <- res(100000,5,10,9,9,8)
r3 <- res(100000,5,11,9,8,8)
r4 <- res(100000,5,12,8,8,8)
r5 <- res(100000,5,13,8,8,7)
r6 <- res(100000,5,14,8,7,7)
r7 <- res(100000,5,15,7,7,7)
r8 <- res(100000,5,16,7,7,6)

x <- c(9:16)
y <- c(r1,r2,r3,r4,r5,r6,r7,r8)
plot(x,y)

画像9

一旦、以上です。個人的には、残り枠数31枚での(10,7,7,7)や残り枠数32枚での(11,7,7,7)の配分で、他のパターンよりも顕著に確率が高くなっている(グラフが尖っている)のが面白いな、と感じました。

--------------------------------------------------------------------------------------

また、枠数ごとの最適なルーターの枚数は以下のようになっていました。

画像10

図 1.残り枠数と最適な配分で採用されたルーター枚数の関係。x軸が残り枠数、y軸がルーターの枚数。

このように、全体的には右上がりとなります。残り枠数によっては、もう1枚パーツを追加するときにルーター以外のパーツを優占した方が成功確率を上げられるときもあるようです。

--------------------------------------------------------------------------------------

次に、残り枠数28~36における成功確率の最大値を比較します。枠数が増えるにしたがって、どのように成功確率が推移するのでしょうか。

#
r28 <- res(100000,5,10,6,6,6)
r29 <- res(100000,5,9,7,7,6)
r30 <- res(100000,5,10,7,7,6)
r31 <- res(100000,5,10,7,7,7)
r32 <- res(100000,5,11,7,7,7)
r33 <- res(100000,5,12,7,7,7)
r34 <- res(100000,5,11,8,8,7)
r35 <- res(100000,5,11,8,8,8)
r36 <- res(100000,5,12,8,8,8)
x <- c(28:36)
y <- c(r28,r29,r30,r31,r32,r33,r34,r35,r36)
plot(x,y)

画像12

これは綺麗な線形になりました。そうなんだ。。

ちなみに後攻だとこうなります。

#
r28 <- res(100000,6,10,6,6,6)
r29 <- res(100000,6,9,7,7,6)
r30 <- res(100000,6,10,7,7,6)
r31 <- res(100000,6,10,7,7,7)
r32 <- res(100000,6,11,7,7,7)
r33 <- res(100000,6,12,7,7,7)
r34 <- res(100000,6,11,8,8,7)
r35 <- res(100000,6,11,8,8,8)
r36 <- res(100000,6,12,8,8,8)
x <- c(28:36)
y <- c(r28,r29,r30,r31,r32,r33,r34,r35,r36)
plot(x,y)

画像12

つまり、残り枠数32枚くらいを割けると、先攻で60%くらいの確率、後攻で70%くらいの確率で4ターン目にコンボを成功させられるようです。枠数の割き方によっては、後手をまくるようなことも結構可能なのかもしれません。

--------------------------------------------------------------------------------------

残り枠数を上昇させれば、4ターン目成功確率が単調増加するというのは分かりました。これを図1と合わせて解釈してみます。

墓地退化にはときどきメタカードを積むこともあります。この場合、コンボ成功率を上げるだけではなく、出来るだけメタカードを引きやすくなるような構築の方が理想的です。そうであれば、残り枠数の中で最大限のコンボ成功確率を出せるような構築でありながら、ルーターの枚数が極力多いほうが、特定のメタカードを引ける確率も高くなり、より理想的かもしれません。

そうであれば、残り枠数が増加してルーターによる効率性が上がったような、残り枠数30,32,33,36枚あたりの構築であれば、コンボ成功確率を最大限高めつつ、同時にルーターによってメタカードを引く確率も高められると推測されます。

少し横着ですが、以前の記事で載せた内容を一部改変して、4枚積みのあるメタカードを4ターン目までに引く確率を求めます。

res <- function(n, a, k1, k2){
 success <- 0
 factor1 <- 0
 factor2 <- 0

 
 for(i in 1:n){
   num <- 0
   hand <- num
   t.deck <- c(1:40)
   
   #a+1枚引く
   for(j in 1:a+1){
     num[j] <- c(sample(t.deck,1))
     t.deck[num[j]] <- NA
     t.deck <- na.omit(t.deck)
     hand <- c(hand,num[j])
   }
   
   factor1 <- length(hand[hand>=1&hand<=k1])
   
   #2t目にルーター引けてるか引けてないか分岐
   #引けていた場合
   if(factor1>=1){
     num <- c(sample(t.deck,3))
     t.deck[num] <- NA
     t.deck <- na.omit(t.deck)
     hand <- c(hand,num)
     
     #3t目にさらにもう1枚ルーター引けてるか引けてないか分岐
     #もう一度定義
     factor1 <- length(hand[hand>=1&hand<=k1])
     if(factor1>=2){
       num <- c(sample(t.deck,3))
       t.deck[num] <- NA
       t.deck <- na.omit(t.deck)
       hand <- c(hand,num)
     }else{
       num <- c(sample(t.deck,1))
       t.deck[num] <- NA
       t.deck <- na.omit(t.deck)
       hand <- c(hand,num)
     }
     #4t目に各要素揃っているか
     factor2 <- length(hand[hand>=k1+1&hand<=k1+k2])
     
     if(factor2>=1){
       success <- success + 1
     }
     
     #2t目にルーター引けていなかった場合(factor1<=0の場合)
   }else{
     num <- c(sample(t.deck,1))
     t.deck[num] <- NA
     t.deck <- na.omit(t.deck)
     hand <- c(hand,num)
     
     #3t目にルーター引けてるか引けてないか分岐
     #もう一度定義
     factor1 <- length(hand[hand>=1&hand<=k1])
     if(factor1>=1){
       num <- c(sample(t.deck,3))
       t.deck[num] <- NA
       t.deck <- na.omit(t.deck)
       hand <- c(hand,num)
     }else{
       #ルーターを1枚も引けていない場合、成功しない
       num <- c(sample(t.deck,1))
       t.deck[num] <- NA
       t.deck <- na.omit(t.deck)
       hand <- c(hand,num)
     }
     #4t目に各要素揃っているか
     factor2 <- length(hand[hand>=k1+1&hand<=k1+k2])
     
     if(factor2>=1){
       success <- success + 1
     }
   }
   
 }
 return(success/n)
}

これを使って、ルーター9~12枚の範囲の構築でどれだけメタカードを引く確率が変動するのでしょうか。それを以下に示します。

#
r9 <- res(100000,5,9,4)
r10 <- res(100000,5,10,4)
r11 <- res(100000,5,11,4)
r12 <- res(100000,5,12,4)

x <- c(9:12)
y <- c(r9,r10,r11,r12)
plot(x,y)

画像13

9→10→11となるにつれ単調増加していますが、12枚になるときは増加がやや鈍化しているようです。したがって、y÷xの値はx=12のときに最も低くなります。このことから、「4ターン目までにメタカードを引く確率」に限っていえば、ルーターが10,11枚のときに引く確率を効率的に上げられる、と解釈出来そうです。※絶対値はx=12のときが最大です。ここではあくまで(確率)÷(ルーター枚数)を論じています。

残り枠数30,32,33,36枚のうち、ルーターを10,11枚積めるのは残り枠数30または32枚のときのみ。ですので、(10,7,7,6)または(11,7,7,7)の構築だと、メタカードも高効率で引くことが出来るようです。

※2ターン目までにオニカマスを引きたい、とかのパターンではこの限りではありません。というかその場合はもともとルーターとか関係ありませんね。

--------------------------------------------------------------------------------------















風邪引くと趣味のプログラミングがはかどるなあ。。

この記事が気に入ったらサポートをしてみませんか?