ピクミン チョコエッグ16種のコンプリート必要数を算出してみた

ピクミンのチョコエッグは15種類+シークレット1種類の計16種類ですが、それらをすべてコンプリートするまでの試行回数を算出してみました。

 

※16種類すべて一様確率で出現するものと仮定しております。

 

計算結果

回数別のコンプリート確率
x軸:試行回数  y軸:その回数ぴったりでコンプリートする確率
x回目までの累積コンプリート確率
x軸:試行回数  y軸:その回数までにコンプリートできている確率(累積コンプリート確率)
  • 30-60回くらいで揃う人が全体の2/3
  • 90回までに約95%の確率で揃う
  • 出ない人はとことん沼にはまる。最後の1-2種で運が下振れるパターンだと思う

その他詳細な値

● 16 種類
平均: 54.0916638916639 回
中央値: 51 回
最頻値: 44 回

分散: 351.5010486702529
標準偏差: 18.74836122625796

※上位x%の運のときのコンプ回数
上位 1 %: 26 回
上位 5 %: 31 回
上位 10 %: 34 回
上位 25 %: 41 回
上位 50 %: 51 回
上位 75 %: 63 回
上位 90 %: 79 回
上位 95 %: 90 回
上位 99 %: 115 回


x回目までのコンプリート確率
15 回目まで: 0.0 %
16 回目まで: 0.00011342267125513672 %
17 回目まで: 0.0009640927056686621 %
18 回目まで: 0.004428800866665417 %
19 回目まで: 0.014596966121764587 %
20 回目まで: 0.038682631039133955 %
21 回目まで: 0.0876103064300441 %
22 回目まで: 0.17608833316435113 %
23 回目まで: 0.32212225912272974 %
24 回目まで: 0.5460486908613522 %
25 回目まで: 0.8692533486444408 %
26 回目まで: 1.3127673727534104 %
27 回目まで: 1.8959223365998656 %
28 回目まで: 2.635203318412418 %
29 回目まで: 3.543387161771192 %
30 回目まで: 4.629002234908725 %
31 回目まで: 5.896104146348533 %
32 回目まで: 7.344332174910777 %
33 回目まで: 8.969193673311748 %
34 回目まで: 10.762516617347458 %
35 回目まで: 12.713011221904033 %
36 回目まで: 14.806887484654158 %
37 回目まで: 17.028484338491126 %
38 回目まで: 19.360875996205568 %
39 回目まで: 21.786430792387634 %
40 回目まで: 24.287306579139052 %
41 回目まで: 26.845874102379387 %
42 回目まで: 29.445065637344257 %
43 回目まで: 32.06865054069847 %
44 回目まで: 34.701442435905264 %
45 回目まで: 37.32944469408252 %
46 回目まで: 39.93994192491062 %
47 回目まで: 42.52154556180333 %
48 回目まで: 45.064201499679555 %
49 回目まで: 47.559167279941335 %
50 回目まで: 49.998965642669894 %
51 回目まで: 52.37732047877982 %
52 回目まで: 54.68908038772455 %
53 回目まで: 56.930134230838135 %
54 回目まで: 59.0973223008722 %
55 回目まで: 61.18834602573182 %
56 回目まで: 63.201678499784194 %
57 回目まで: 65.13647759310702 %
58 回目まで: 66.99250292633121 %
59 回目まで: 68.77003761171093 %
60 回目まで: 70.46981534315908 %
61 回目まで: 72.0929531616665 %
62 回目まで: 73.64089001992822 %
63 回目まで: 75.11533111344099 %
64 回目まで: 76.51819782759122 %
65 回目まで: 77.85158306473264 %
66 回目まで: 79.11771165609191 %
67 回目まで: 80.31890552541076 %
68 回目まで: 81.4575532501301 %
69 回目まで: 82.53608365791297 %
70 回目まで: 83.55694309826987 %
71 回目まで: 84.52257603842197 %
72 回目まで: 85.43540864721435 %
73 回目まで: 86.29783504919072 %
74 回目まで: 87.11220595152221 %
75 回目まで: 87.88081936830125 %
76 回目まで: 88.605913188964 %
77 回目まで: 89.289659359686 %
78 回目まで: 89.93415946806348 %
79 回目まで: 90.54144154193408 %
80 回目まで: 91.11345789259477 %
81 回目まで: 91.65208385081351 %
82 回目まで: 92.15911726083573 %
83 回目まで: 92.6362786130402 %
84 回目まで: 93.08521171001472 %
85 回目まで: 93.50748477364218 %
86 回目まで: 93.90459191237228 %
87 回目まで: 94.2779548782715 %
88 回目まで: 94.62892505277449 %
89 回目まで: 94.95878560838182 %
90 回目まで: 95.26875380094619 %
91 回目まで: 95.55998335374007 %
92 回目まで: 95.83356690028107 %
93 回目まで: 96.0905384579792 %
94 回目まで: 96.3318759091345 %
95 回目まで: 96.55850346971523 %
96 回目まで: 96.77129412974956 %
97 回目まで: 96.97107205211829 %
98 回目まで: 97.15861491909627 %
99 回目まで: 97.33465621819825 %
100 回目まで: 97.49988746078367 %
101 回目まで: 97.65496032850083 %
102 回目まで: 97.80048874403707 %
103 回目まで: 97.93705086381749 %
104 回目まで: 98.06519099128772 %
105 回目まで: 98.1854214102481 %
106 回目まで: 98.29822413840024 %
107 回目まで: 98.40405260183938 %
108 回目まで: 98.50333323169342 %
109 回目まで: 98.5964669844879 %
110 回目まで: 98.6838307881163 %
111 回目まで: 98.76577891552827 %
112 回目まで: 98.84264428842714 %
113 回目まで: 98.91473971339474 %
114 回目まで: 98.98235905295164 %
115 回目まで: 99.04577833411318 %
116 回目まで: 99.10525679702698 %
117 回目まで: 99.16103788627804 %
118 回目まで: 99.21335018742879 %
119 回目まで: 99.26240831132597 %
120 回目まで: 99.30841372865773 %
121 回目まで: 99.3515555571858 %
122 回目まで: 99.39201130401042 %
123 回目まで: 99.42994756515273 %
124 回目まで: 99.46552068466129 %
125 回目まで: 99.49887737536903 %
126 回目まで: 99.53015530334362 %
127 回目まで: 99.55948363799065 %
128 回目まで: 99.58698356968489 %
129 回目まで: 99.61276879672161 %
130 回目まで: 99.63694598329698 %
131 回目まで: 99.65961519014638 %
132 回目まで: 99.68087027938928 %
133 回目まで: 99.70079929505359 %
134 回目まで: 99.71948482067664 %
135 回目まで: 99.73700431530877 %
136 回目まで: 99.75343042917507 %
137 回目まで: 99.76883130018497 %
138 回目まで: 99.78327083241443 %
139 回目まで: 99.79680895762465 %
140 回目まで: 99.80950188082248 %
141 回目まで: 99.82140231081154 %
142 回目まで: 99.83255967662991 %
143 回目まで: 99.8430203307198 %
144 回目まで: 99.85282773962562 %
145 回目まで: 99.86202266297218 %
146 回目まで: 99.87064332143021 %
147 回目まで: 99.87872555433613 %
148 回目まで: 99.88630296759365 %
149 回目まで: 99.89340707244786 %
150 回目まで: 99.90006741568787 %
151 回目まで: 99.90631170180086 %
152 回目まで: 99.91216590756959 %
153 回目まで: 99.91765438957579 %
154 回目まで: 99.92279998504434 %
155 回目まで: 99.927624106437 %
156 回目まで: 99.9321468301797 %
157 回目まで: 99.9363869798845 %
158 回目まで: 99.94036220440513 %
159 回目まで: 99.94408905104476 %
160 回目まで: 99.94758303421504 %
161 回目まで: 99.95085869982762 %
162 回目まで: 99.9539296856814 %
163 回目まで: 99.95680877809387 %
164 回目まで: 99.95950796500854 %
165 回目まで: 99.96203848579698 %
166 回目まで: 99.96441087796023 %
167 回目まで: 99.96663502092203 %
168 回目まで: 99.96872017709393 %
169 回目まで: 99.97067503038228 %
170 回目まで: 99.9725077222952 %
171 回目まで: 99.97422588579934 %
172 回目まで: 99.97583667706581 %
173 回目まで: 99.97734680523685 %
174 回目まで: 99.97876256033611 %
175 回目まで: 99.98008983943824 %
176 回目まで: 99.98133417120599 %
177 回目まで: 99.98250073889662 %
178 回目まで: 99.98359440193263 %
179 回目まで: 99.98461971612673 %
180 回目まで: 99.9855809526443 %

 

その他

  • 最頻値 < 中央値 < 平均値 (平均値より早く揃う人の方が、割合としては多い)
  • コンプリート確率は、右側に裾野が広い(運が悪いときはとことんダブる)
  • クーポンコレクター問題全般に言えるが、出ない人はとことん出ず、平均から大きく上振れて平均値押上げの原因となる
  • 回数や購入単価を下げたい場合、「3人で全種類3個以上そろえる」「欲しいやつやダブりを交換する」などをすれば、1人当たりの購入単価は下がる。人数が増えるほど効果的。

 

計算結果出力のためのソースコード

from sympy.functions.combinatorial.numbers import stirling
import matplotlib.pyplot as plt
import math
import numpy as np

k = CouponKind = 16 #クーポンの数
numTrial = 180 #入手回数の上限値

x = []
y = []
for n in range(1, numTrial+1):
    stir = stirling(n-1, k-1, kind = 2)
    prob = math.factorial(k) * stir / (k**n)
    x.append(n)
    y.append(prob)
plt.bar(x, y, label='k = {}'.format(k))
plt.xticks(np.arange(0, numTrial+1, step=30)) #stepは適宜変更
plt.grid(linestyle="--")
plt.legend()
plt.show()

z=[0]*numTrial
psum=0
yy=[0]+y
for i in range(0,numTrial):
    psum += y[i]
    z[i] = psum
plt.plot(x, z, label='k = {} cdf'.format(k),)
plt.xticks(np.arange(0, numTrial+1, step=30)) #stepは適宜変更
plt.yticks(np.arange(0, 1.1, step=0.1))
plt.grid(linestyle="--")
plt.legend()
plt.show()
print()

zz=[0]*numTrial
zzz=[0]*numTrial
for i in range(0,numTrial):
    zz[i]=float(z[i])
    zzz[i]=zz[i]-zz[i-1]

hk=0
for i in range(1,CouponKind+1):
    hk += 1/i
var=0
for j in range(1,CouponKind+1):
    var += (1-j/CouponKind)/((j/CouponKind)**2)
print("●",CouponKind,"種類")
print("平均:",CouponKind*hk,"回")
for i in range(0,numTrial):
    if 100*zz[i] >= 50:
        print("中央値:", zz.index(zz[i])+1,"回")
        break
print("最頻値:", zzz.index(max(zzz))+1,"回")
print()
print("分散:",var)
print("標準偏差:",math.sqrt(var))
print()

print("※上位x%の運のときのコンプ回数")
for j in [1,5,10,25,50,75,90,95,99]: #上位x%の運の持ち主がコンプにかかる回数
    for i in range(0,numTrial):
        if 100*zz[i] >= j:
            print("上位",j,"%:", zz.index(zz[i])+1,"回")
            break

print()
print()
for i in range(0,numTrial):
    zz[i]=float(z[i])
    print(i+1,"回目まで:", 100*zz[i],"%")

※出力結果の1回目~14回目は削除済み

 

コメント

タイトルとURLをコピーしました