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

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

なお、今回は花札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をコピーしました