スクフェスで新規URを得る為に必要な軍資金(期待値)は

統計の小ネタシリーズ・・・なんて,別にシリーズ化していないけど.

まず,簡単に理論計算すると,UR出現率は1%,ガチャ11連1回3,000円なので,
110連すれば1枚得られる事が期待できる.つまり,30,000円に1回URが出ると.
新規追加部員は確率アップされるけど,具体的に何%アップされるのかは不明.
でも,ネットの情報を調べる限りでは,50%という声が多かった様に思う.
なので,ベイズ推定的に,新規追加部員の出現確率はその他に比べ50%アップと考えると,
URの2枚に1枚は新規追加部員という風に考える事ができる.
そのため,新規追加されたURは約6万円投入すれば得られる事が期待される.
最も,これは概算であって,実際には10連分少ない金額が期待される.

さて,この考えが正しいかどうか,実際にはどの程度の金額が必要なのか,
またどれ位のばらつきが考えられるのか,その時に投入資金がどの様に分布するのか,
簡単なシミュレーションをして統計的に考えてみる.

シミュレーションでの仮定は以下の通り.

・出現確率UR1%, SR9%, R90%
・11連しかしない,11連は1回¥3,000とする
・新規部員の出現率は50%アップ(追記で40%アップの場合も)
・SR以上確定の処理は『全部Rの時にRを一枚SRに置き換える』と考える
(つまりURについてはその処理は関係しないものとして今回考慮しない)
・出るまで回すというのを10,000回試行してヒストグラム(度数分布)を導出
・ブートストラップ法により母平均(ブートストラップ平均)推定(期待値算出)

NUM=1
flag = 0
count= 1
x <- 1:100 #確率計算用(UR1%,SR9%,R90%)
n <- 10000
m <- 10000
boot.replicate_temp <- numeric(m) #boot.replicate[n]という配列作る
boot.replicate_sum_temp <- numeric(m) #boot.replicate[n]
boot.replicate <- numeric(n) #boot.replicate[n]という配列作る
boot.replicate_sum <- numeric(n)#boot.replicate[n]



for(i in 1:m){
 repeat{
 res <- sample(x, 11, replace=T) #11連
 
 flag <- flag+sum(sample(0:1, length(which(res==100)), replace=T))
 if(flag >= NUM){ #NUM枚出るまで回す
 break
 }
 count <- count + 1
 }
 boot.replicate_temp[i] <- count #出るまでに回す回数
 boot.replicate_sum_temp[i] <- count * 3000 #1回¥3,000 
 
 flag <- 0
 count <- 1
}

for(j in 1:n){
 boot.replicate[j] <- mean(sample(boot.replicate_temp, n, replace=T))
 boot.replicate_sum[j] <- mean(sample(boot.replicate_sum_temp, n, replace=T))
}

par(mfrow=c(2,2))
hist(boot.replicate_temp)
hist(boot.replicate_sum_temp)
hist(boot.replicate)
hist(boot.replicate_sum)


quantile(boot.replicate, c(0.025,0.975))
quantile(boot.replicate_sum, c(0.025,0.975))


Histogram
上2つのヒストグラムが,回した回数とそれに要した金額.
下2つのヒストグラムは,そのブートストラップ平均(母平均推定値)とその金額.
平均のヒストグラムは,中心極限定理により綺麗に正規分布に従う事がみて取れる.

パーセンタイル法に基づく95%信頼区間は,


出るまでの平均回数:18.88468~19.61690回
必要な平均金額:56,659.19~58,838.40円

という事になる.

という訳で,11連をおよそ19回やれば,金額にして約57,000円投入すれば,
新規追加されたURをゲットする事ができる!(事が期待される)

あくまで,これは期待値(平均)の話なので,期待値を意識し過ぎるとあれ?ってなるので注意.
また,信頼区間というのは,あくまでその母平均推定値が,その標本から推定された時に,
95%の確率でその範囲内に収束するであろう事を云っているだけであって,
実際の試行数やその結果の金額がその範囲内に95%の確率で収束する事を保証する訳ではない.

試行回数のヒストグラムをみてもらえれば分かる様に,
10回(石500個)回して出る確率は40%,
20回(石1,000個)回して出る確率は65%,
30回(石1,500個)回して出る確率は80%,
42回(石2,100個)回して出る確率は90%,
54回(石2,700個)回してやっと95%の確率で出るという事が分かる.
(そしてそれを何回も何回も繰り返していると,その平均は上の様に収束する訳)

ちゅんちゅんカードを買う時はとりあえず6万円分を1セットで買いましょう(ニッコリ
でも,20回回しても出ない確率は35%あるよ……って話.

ちなみに,どっかで「確率操作されているかどうかなんてユーザには分からない」
って言っている人がいたけども,この方法を応用すると,調べる事ができる.
要は理論的に想定される確率分布に対して,
実際に観測される結果から統計的に推定される確率分布が異なる場合,
確率が操作されている事が推測される.
まあ,それをする為にはデータ取らないといけない……,
つまり,ある程度の標本が得られる程,ガチャを回さないといけない訳だけど(^^ゞ

統計学って面白いよね.

ちなみにちなみに,新規URを覚醒させたい場合はこんな感じに……

Histogram2


11連の回数(95%CI):36.52610~37.53451
平均必要金額(95%CI):109593.5~112631.2

1枚の時と同様に試行回数に対して2枚得られる確率を求めると,
30回(石1,500個)で50%
37回(石1,850個)で60%
44回(石2,200個)で70%
54回(石2,700個)で80%
70回(石3,500個)で90%
87回(石4,350個)で95%
となる.

追記:

新規部員の出現確率アップは「40%」って見方もある様なので,
仮に出現確率が40%アップだった場合をシミュレートしてみた.

NUM=1
flag = 0
count= 1
x = NUM){ #NUM枚出るまで回す
 break
 }
 count NUM=1
flag = 0
count= 1
x <- 1:100 #確率計算用(UR1%,SR9%,R90%)
n <- 10000
m <- 10000
boot.replicate_temp <- numeric(m) #boot.replicate[n]という配列作る
boot.replicate_sum_temp <- numeric(m) #boot.replicate[n]
boot.replicate <- numeric(n) #boot.replicate[n]という配列作る
boot.replicate_sum <- numeric(n)#boot.replicate[n]



for(i in 1:m){
 repeat{
 res <- sample(x, 11, replace=T) #11連
 nres <- sample(1:10, length(which(res==100)), replace=T)
 flag <- flag+length(which(nres < 5))
 if(flag >= NUM){ #NUM枚出るまで回す
 break
 }
 count <- count + 1
 }
 boot.replicate_temp[i] <- count #出るまでに回す回数
 boot.replicate_sum_temp[i] <- count * 3000 #1回¥3,000 
 
 flag <- 0
 count <- 1
}

for(j in 1:n){
 boot.replicate[j] <- mean(sample(boot.replicate_temp, n, replace=T))
 boot.replicate_sum[j] <- mean(sample(boot.replicate_sum_temp, n, replace=T))
}

par(mfrow=c(2,2))
hist(boot.replicate_temp)
hist(boot.replicate_sum_temp)
hist(boot.replicate)
hist(boot.replicate_sum)


quantile(boot.replicate, c(0.025,0.975))
quantile(boot.replicate_sum, c(0.025,0.975))

まず,UR1枚取りの場合:

Histogram3


11連回数(95%CI):22.88159~23.76151
平均使用金額(95%CI):68645.69~71266.25

さて,平均は無限試行に対して得られる期待値なので,
何回も何回も挑戦していたら平均に収束するけども,
1回のチャレンジにおける確率を考える上では必ずしも当て嵌まりは良くない.
なので,n試行に対して(11連をn回やって)URが得られる確率は以下の通り.

16回(石800個)で50%,
22回(石1,100個)で60%,
28回(石1,400個)で70%,
37回(石1,850個)で80%,
53回(石2,650個)で90%,
68回(石3,400個)で95%

の確率で1枚取りできる.

UR2枚取り(覚醒狙い)の場合:

Histogram4


11連回数(95%CI):45.38698~46.66422
平均使用金額(95%CI):136299.0~139983.9

さて,平均は無限試行に対して得られる期待値なので,
何回も何回も挑戦していたら平均に収束するけども,
1回のチャレンジにおける確率を考える上では必ずしも当て嵌まりは良くない.
なので,n試行に対して(11連をn回やって)URが得られる確率は以下の通り.

38回(石1,900個)で50%,
46回(石2,300個)で60%,
56回(石2,800個)で70%,
68回(石3,400個)で80%,
89回(石4,450個)で90%,
109回(石5,450個)で95%

の確率で2枚取りできる.

はてさて,出現確率40%アップと50%アップではどちらの方が確からしいのやら.





追記

『11連SR以上確定』の処理について,

・11枚すべてRだった場合,1枚について比率9:1でSRかURに置き換える

という処理を考慮してみる.
新規部員の出現確率アップは40%として考える.

NUM=1
flag = 0
count= 1
x <- 1:100 #確率計算用(UR1%,SR9%,R90%)
n <- 10000
m <- 10000
boot.replicate_temp <- numeric(m) #boot.replicate[n]という配列作る
boot.replicate_sum_temp <- numeric(m) #boot.replicate[n]
boot.replicate <- numeric(n) #boot.replicate[n]という配列作る
boot.replicate_sum <- numeric(n)#boot.replicate[n]



for(i in 1:m){
 repeat{
 res <- sample(x, 11, replace=T) #11連
 if(length(which(res>=90)) == 0){
 res <- sample(99:100, 1, replace=T, prob=c(0.09, 0.01))#SR9%,UR1%(比率9:1)
 }
 flag <- flag + sum(sample(0:1, length(which(res==100)), replace=T, prob=c(0.6, 0.4)))#新規出現率4割
 if(flag >= NUM){ #NUM枚出るまで回す
 break
 }
 count <- count + 1
 }
 boot.replicate_temp[i] <- count #出るまでに回す回数
 boot.replicate_sum_temp[i] <- count * 50 #出るまでに要した石の個数 
 
 flag <- 0
 count <- 1
} 

for(j in 1:n){
 boot.replicate[j] <- mean(sample(boot.replicate_temp, n, replace=T))
 boot.replicate_sum[j] <- mean(sample(boot.replicate_sum_temp, n, replace=T))
}

par(mfrow=c(2,2))
hist(boot.replicate_temp)
hist(boot.replicate_sum_temp)
hist(boot.replicate)
hist(boot.replicate_sum)


quantile(boot.replicate, c(0.025,0.975))
quantile(boot.replicate_sum, c(0.025,0.975))

Histogram5

出るまでに回した平均回数(95%CI):およそ18回(17.70630~18.38181)
出るまでに要した石の個数(95%CI):およそ900個(885.3899~919.3100)

13回(石650個)で50%
17回(石850個)で60%
22回(石1,100個)で70%
28回(石1,400個)で80%
41回(石2,050個)で90%
53回(石2,650個)で95%

1回チャレンジ(出るまで回す)するだけなら余り大きな差は無いけど,
長期的にみると(期待値)大きく異なってくる事がよく分かる.

カテゴリー: 統計学, 日記 パーマリンク