ピクミンブルーム 苗取得回数とデコゲット種類数の確率的関係グラフ

ピクミンブルームで、「苗をいくつ取得したら、確率的にはデコゲット種類数がいくつになるか」を求めるシミュレーションプログラムを書いてみました。

なお、今回は花札24種類の場合のみのシミュレーション結果を載せます。他の場合は、後述のプログラムを書き換えてご自由にお使いください。

 

苗取得回数が一定の値で固定の場合のシミュレーションはこちら:ピクミンブルーム 花札デコの苗26個で平均何種類の絵柄が手に入るか?【推移行列のn乗】

 

コンプリートまでの回数のシミュレーションはこちら:ピクミンブルーム 24種の花札デコをそろえるのに必要な回数【平均、中央値、最頻値、上位x%点】

 

花札デコ(24種類)の場合

x回苗取得時のデコゲット数の平均値と、上位10%~下位10%の値のグラフ
  • x軸:何回、苗を取得したか
  • y軸:デコゲット種類数

 

  • 青線:デコゲット数の平均値
  • オレンジ線:上位10%のときのデコゲット数
  • 緑線:下位10%のときのデコゲット数

 

青線が平均値で、運が上位10%下位10%の人はおおよそオレンジ線緑線の間に収まることを意味します。
グラフの数表
  • 小数第4位までの数字がx回苗取得時のデコゲット数の平均値
  • ()内が、運が下位10%~上位10%のときのデコゲット数

です。

()内  Bottom 10.0 %  Top 10.0 %

0 回平均: 0.0   0  0 
1 回平均: 1.0   1  1 
2 回平均: 1.9583   2  2 
3 回平均: 2.8767   2  3 
4 回平均: 3.7569   3  4 
5 回平均: 4.6003   4  5 
6 回平均: 5.4087   5  6 
7 回平均: 6.1833   5  7 
8 回平均: 6.9257   6  8 
9 回平均: 7.6371   6  9 
10 回平均: 8.3189   7  10 
11 回平均: 8.9723   8  10 
12 回平均: 9.5984   8  11 
13 回平均: 10.1985   9  12 
14 回平均: 10.7735   9  12 
15 回平均: 11.3246   10  13 
16 回平均: 11.8528   10  14 
17 回平均: 12.3589   11  14 
18 回平均: 12.844   11  15 
19 回平均: 13.3088   11  15 
20 回平均: 13.7543   12  16 
21 回平均: 14.1812   12  16 
22 回平均: 14.5903   13  16 
23 回平均: 14.9824   13  17 
24 回平均: 15.3581   13  17 
25 回平均: 15.7182   14  18 
26 回平均: 16.0633   14  18 
27 回平均: 16.3939   14  18 
28 回平均: 16.7109   15  19 
29 回平均: 17.0146   15  19 
30 回平均: 17.3056   15  19 
31 回平均: 17.5846   16  20 
32 回平均: 17.8519   16  20 
33 回平均: 18.1081   16  20 
34 回平均: 18.3536   16  20 
35 回平均: 18.5888   17  21 
36 回平均: 18.8143   17  21 
37 回平均: 19.0304   17  21 
38 回平均: 19.2374   17  21 
39 回平均: 19.4359   18  21 
40 回平均: 19.626   18  21 
41 回平均: 19.8083   18  22 
42 回平均: 19.9829   18  22 
43 回平均: 20.1503   18  22 
44 回平均: 20.3107   18  22 
45 回平均: 20.4644   19  22 
46 回平均: 20.6118   19  22 
47 回平均: 20.7529   19  22 
48 回平均: 20.8882   19  23 
49 回平均: 21.0179   19  23 
50 回平均: 21.1421   19  23 
51 回平均: 21.2612   20  23 
52 回平均: 21.3753   20  23 
53 回平均: 21.4847   20  23 
54 回平均: 21.5895   20  23 
55 回平均: 21.6899   20  23 
56 回平均: 21.7862   20  23 
57 回平均: 21.8784   20  23 
58 回平均: 21.9668   20  23 
59 回平均: 22.0515   21  23 
60 回平均: 22.1327   21  24 
61 回平均: 22.2105   21  24 
62 回平均: 22.2851   21  24 
63 回平均: 22.3565   21  24 
64 回平均: 22.425   21  24 
65 回平均: 22.4907   21  24 
66 回平均: 22.5535   21  24 
67 回平均: 22.6138   21  24 
68 回平均: 22.6716   21  24 
69 回平均: 22.7269   21  24 
70 回平均: 22.78   21  24 
71 回平均: 22.8308   22  24 
72 回平均: 22.8795   22  24 
73 回平均: 22.9262   22  24 
74 回平均: 22.9709   22  24 
75 回平均: 23.0138   22  24 
76 回平均: 23.0549   22  24 
77 回平均: 23.0943   22  24 
78 回平均: 23.132   22  24 
79 回平均: 23.1682   22  24 
80 回平均: 23.2029   22  24 
81 回平均: 23.2361   22  24 
82 回平均: 23.2679   22  24 
83 回平均: 23.2984   22  24 
84 回平均: 23.3276   22  24 
85 回平均: 23.3557   22  24 
86 回平均: 23.3825   22  24 
87 回平均: 23.4082   22  24 
88 回平均: 23.4329   22  24 
89 回平均: 23.4565   23  24 
90 回平均: 23.4792   23  24 
91 回平均: 23.5009   23  24 
92 回平均: 23.5217   23  24 
93 回平均: 23.5416   23  24 
94 回平均: 23.5607   23  24 
95 回平均: 23.579   23  24 
96 回平均: 23.5965   23  24 
97 回平均: 23.6133   23  24 
98 回平均: 23.6295   23  24 
99 回平均: 23.6449   23  24 
100 回平均: 23.6597   23  24 
101 回平均: 23.6739   23  24 
102 回平均: 23.6875   23  24 
103 回平均: 23.7005   23  24 
104 回平均: 23.713   23  24 
105 回平均: 23.7249   23  24 
106 回平均: 23.7364   23  24 
107 回平均: 23.7474   23  24 
108 回平均: 23.7579   23  24 
109 回平均: 23.768   23  24 
110 回平均: 23.7777   23  24 
111 回平均: 23.7869   23  24 
112 回平均: 23.7958   23  24 
113 回平均: 23.8043   23  24 
114 回平均: 23.8125   23  24 
115 回平均: 23.8203   23  24 
116 回平均: 23.8278   23  24 
117 回平均: 23.8349   23  24 
118 回平均: 23.8418   23  24 
119 回平均: 23.8484   23  24 
120 回平均: 23.8547   23  24 

 

7種類デコの場合

x回苗取得時のデコゲット数の平均値と、上位10%~下位10%の値のグラフ
  • x軸:何回、苗を取得したか
  • y軸:デコゲット種類数

 

  • 青線:デコゲット数の平均値
  • オレンジ線:上位10%のときのデコゲット数
  • 緑線:下位10%のときのデコゲット数
グラフの数表
  • 小数第4位までの数字がx回苗取得時のデコゲット数の平均値
  • ()内が、運が下位10%~上位10%のときのデコゲット数
()内  Bottom 10.0 %  Top 10.0 %

0 回平均: 0.0   0  0 
1 回平均: 1.0   1  1 
2 回平均: 1.8571   1  2 
3 回平均: 2.5918   2  3 
4 回平均: 3.2216   2  4 
5 回平均: 3.7613   3  5 
6 回平均: 4.224   3  5 
7 回平均: 4.6206   4  6 
8 回平均: 4.9605   4  6 
9 回平均: 5.2519   4  6 
10 回平均: 5.5016   4  7 
11 回平均: 5.7157   5  7 
12 回平均: 5.8991   5  7 
13 回平均: 6.0564   5  7 
14 回平均: 6.1912   5  7 
15 回平均: 6.3067   5  7 
16 回平均: 6.4058   6  7 
17 回平均: 6.4907   6  7 
18 回平均: 6.5634   6  7 
19 回平均: 6.6258   6  7 
20 回平均: 6.6793   6  7 
21 回平均: 6.7251   6  7 
22 回平均: 6.7643   6  7 
23 回平均: 6.798   6  7 
24 回平均: 6.8269   6  7 
25 回平均: 6.8516   6  7 
26 回平均: 6.8728   6  7 
27 回平均: 6.891   6  7 
28 回平均: 6.9065   7  7 
29 回平均: 6.9199   7  7 
30 回平均: 6.9313   7  7 

 

プログラム

  • Coupon = 24 #デコ種類数
  • have = 0 #すでに持っているデコ数
  • lim = 120 #苗取得回数の上限値
  • luck_range = [0.1, 0.9] #上位10%~90%の運の場合のデコゲット種類数

を適宜変更し、グラフ描画の際は#目盛り幅(step)は適宜変更の部分も変えてください。

 

import numpy as np
import matplotlib.pyplot as plt
import math


Coupon = 24 #デコ種類数
have = 0 #すでに持っているデコ数
lim = 120 #苗取得回数の上限値


A=[0]*(Coupon+1)
for i in range(0,Coupon+1):
    A[i] = [0]*(Coupon+1)

for i in range(0,Coupon+1):
    for j in range(0,Coupon+1):
        if i==j:
            A[j][i] = i/Coupon
        elif i==j-1:
            A[j][i] = (Coupon-i)/Coupon

x = [i for i in range(Coupon+1)]
y = [0]*(Coupon+1)

ave = [0]*(lim+1)
xx = [i for i in range(lim+1)]

PerU = [0]*(lim+1)
PerD = [0]*(lim+1)

luck_range = [0.1, 0.9] #上位10%~90%の運の場合のデコゲット種類数

for jj in range(0,lim+1):
    B = np.linalg.matrix_power(A, jj)
    for ii in range(0,Coupon+1):
        if ii >= have:
            y[ii] = B[ii][have]
            ave[jj] = sum([i*j for (i,j) in zip(x,y)])
        if sum(y[0:ii]) <= 1-luck_range[0] and sum(y[0:ii+1]) > 1-luck_range[0]:
            PerU[jj] = ii
        if sum(y[0:ii]) <= 1-luck_range[1] and sum(y[0:ii+1]) > 1-luck_range[1]:
            PerD[jj] = ii


plt.plot(xx, ave, label= "average")
plt.plot(xx, PerU, label= 'top {} %'.format(100*luck_range[0]))
plt.plot(xx, PerD, label= 'bottom {} %'.format(100-100*luck_range[1]))
plt.xticks(np.arange(0, lim+1, step=10)) #x軸の範囲や目盛り幅。目盛り幅(step)は適宜変更
plt.yticks(np.arange(0, Coupon+1, step=2)) #y軸の範囲や目盛り幅。目盛り幅(step)は適宜変更
plt.grid(linestyle="--")
plt.legend()
plt.show()

print()
print()
print("()内 ","Bottom", round(100-100*luck_range[1],4),"% ~", "Top", 100*luck_range[0], "%")
print()
for i in range(0,lim+1):
    print(i, "回平均:", round(ave[i],4), " (", PerD[i], "~", PerU[i],")")

 

コメント

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