スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ポケモンGOの個体値厳選はCP高い子で十分!?

最近ハマってるポケモンGOです。

カイリューとかミニリュウを必死こいて集めて作ってると、どうしても強い子作りたくなりますよね。そこで厳選方法を調べてみたのですが、

ぶっちゃけめんどくさい!!(個人的意見)

というのものです。カイリューあたりはやる意味あるでしょうが、一度厳選を知ってしまうと、図鑑埋め用のポケモン(極端な話ズバット→ゴルバットとかでも)厳選したくなっちゃうのが人間の心境です。

そこで、厳密な選定をしなくても、おおよそ強い子が見極められる方法を考えてみました。結論だけ出すと、

結論:CPが高い子を選定(進化)させれば十分!

という単純なものでした。もちろん厳選には技の構成があり、その部分は考えていません。いま考えるのは、「HP、攻撃力、防御力」といった個体値の厳選です。ただし、このCPが高いというものにはある基準があります。それを調べてみます。

・CPの計算方法
これは拙作の記事にまとめてあります。詳しくはこちら↓
ポケモンGOのCP計算式のサーベイ
http://nekokan333.blog.fc2.com/blog-entry-426.html

・個体値の全パターンを列挙してみよう
調べてみると、個体値やポケモンのレベルについて以下の傾向がわかります(細かくは違うかもしれません)

・個体値はHP、攻撃力、防御力とも、0~15の整数で表される。全16^3パターン
・ゲットしたポケモンは、そのときのトレーナーレベルを上限とした整数レベルとなる。強化を含めると.5といった小数のレベルは存在するが、ゲット直後は1~トレーナーレベルの整数となり.5レベルは存在しない?。全トレーナーレベルパターン

つまり、16^3×トレーナーレベル分のパターンを列挙すればいいことになります。トレーナーレベルが1なら全4096パターン、20なら81920パターン、上限である40なら163840パターンですね。こういうのはプログラムが強いです。

Rを使って列挙してみます。

cpmulti<-function(level)
{
idx<-(level-1)/0.5+1
return(c(0.094, 0.135137432, 0.16639787, 0.192650919, 0.21573247, 0.236572661, 0.25572005, 0.273530381, 0.29024988, 0.306057377, 0.3210876, 0.335445036, 0.34921268, 0.362457751, 0.37523559, 0.387592406, 0.39956728, 0.411193551, 0.42250001, 0.432926419, 0.44310755, 0.453059958, 0.46279839, 0.472336083, 0.48168495, 0.4908558, 0.49985844, 0.508701765, 0.51739395, 0.525942511, 0.53435433, 0.542635767, 0.55079269, 0.558830576, 0.56675452, 0.574569153, 0.58227891, 0.589887917, 0.59740001, 0.604818814, 0.61215729, 0.619399365, 0.62656713, 0.633644533, 0.64065295, 0.647576426, 0.65443563, 0.661214806, 0.667934, 0.674577537, 0.68116492, 0.687680648, 0.69414365, 0.700538673, 0.70688421, 0.713164996, 0.71939909, 0.725571552, 0.7317, 0.734741009, 0.73776948, 0.740785574, 0.74378943, 0.746781211, 0.74976104, 0.752729087, 0.75568551, 0.758630378, 0.76156384, 0.764486065, 0.76739717, 0.770297266, 0.7731865, 0.776064962, 0.77893275, 0.781790055, 0.78463697, 0.787473578, 0.79030001)[idx])
}

pokemons.create<-function(sv.hp, sv.atk, sv.def, trainerLevel)
{
n<-16*16*16*trainerLevel
idx<-seq(0,n-1)
#個体値の設定
atk<-floor((idx/trainerLevel/16/16) %% 16)
def<-floor((idx/trainerLevel/16) %% 16)
ivhp<-floor((idx/trainerLevel) %% 16)
level<-idx %% trainerLevel + 1
#CP計算
mult<-cpmulti(level)
cp<-(sv.atk + atk) * sqrt(sv.def + def) * sqrt(sv.hp + ivhp) * mult^2 / 10
#HP計算
hp<-mult*(sv.hp+ivhp)
#評価値
eval<-atk + def + ivhp

df<-data.frame(index=idx, iv.atk=atk, iv.def=def, iv.hp=ivhp, level=level, cp=cp, hp=hp, eval=eval)

return(df)
}


pokemons.createでポケモンの種族値(HP、攻撃力、防御力)とトレーナーレベルを与えればサクッと全パターン作ってくれます。例えばフシギダネ(種族値 HP90、攻撃126、防御126)でトレーナーレベル23として列挙すると、次のようなデータができます(多すぎるので初めの30行のみ表示)
20160805_1.png

・CPと個体値の関係をプロットしてみる
これでCPと評価値(個体値の3パラメーターの合計とする)の関係を見てみます。横軸にCP、縦軸に評価値を取ってみます。
20160805_2.png

ここでプロットを見て「あ、右側に個体値高い子が集まってる」と気づいた方は鋭い。CP別に個体値の断面図を取ってみましょう。
CP200~400の断面
20160805_3.png
1つ前の図の、個体値が高い子も低い子も密集しているエリアですね。ちょっと個体値ごとの出現頻度がわからないのですが、ズバッと一様乱数と仮定しちゃいましょう(実際は違うと思います)。この場合、評価値の平均は22.5付近ですね。これは0~15の平均7.5×3なのでまあその通りです。

CP550~750の断面
20160805_4.png
評価値の平均が25付近にシフトしているのが確認できるでしょうか?まあそこまで差が出ないといえばそうなのですが、極端にCPが高い子ほど個体値が高いという傾向があります

この部分のRスクリプト

#フシギダネの全パターン
husigidane<-pokemons.create(90,126,126,23)
#とりあえずプロット
plot(husigidane$cp, husigidane$eval, xlab="CP", ylab="評価値(個体値の合計)", main="フシギダネ トレーナーレベル=23")
#CP200~400の断面ヒストグラム
vals<-husigidane[husigidane$cp>=200 & husigidane$cp<=400,]$eval
hist(vals,breaks="Scott",xlab="評価値",ylab="頻度",main="CP200~400の断面ヒストグラム")
abline(v=mean(vals),col="red")
#CP550~750の断面ヒストグラム
vals<-husigidane[husigidane$cp>=550 & husigidane$cp<=750,]$eval
hist(vals,breaks="Scott",xlab="評価値",ylab="頻度",main="CP550~750の断面ヒストグラム")
abline(v=mean(vals),col="red")


・結局CPで厳選するってどーなの?
1.極端にCPが高い子ほど個体値が良い可能性が増える
CPの計算式からもこれは明らかです。

2.最低限、CPがポケモンレベル=トレーナーレベル+かつ個体値が全て0のときのポケモンのCP値を上回っていれば、この判定をしないときよりも強い子が発見しやすくなる
3つ前の図の右の赤い三角の部分です。具体的には、フシギダネかつトレーナーレベルが23なら、Pokemon Rater(https://thesilphroad.com/research)より、
20160805_5.png
個体値ALL0のときCPは最低値となるので、550とわかります。この値にこだわらなくても、極端にCPが高いほど強い子の可能性が高いです!

3.ベストな方法ではない。しかし、ベターな方法である。
個体値をいちいち調べて最強の子を選ぶのが100点とするなら、CPだけで判断するのは60点ぐらい(これは人によって異なるかもしれませんが)の方法。ぶっちゃけそこまで使わない子ならこの方法でもいいんじゃない?


改めて、
めんどくさかったらCPが高い子を選定(進化)させれば十分!

ということがわかりました(それだけ)。あるいは、初めて出会った子とか特別な場所で出会った子とか、思い入れのある子を進化させるのも良いかと思います。プレイスタイルは人それぞれです。
スポンサーサイト
プロフィール

こしあん

Author:こしあん
(:3[____]
【TwitterID : koshian2】
【ほしい物リスト】http://goo.gl/bDtvG2

Twitter
カウンター
天気予報

-天気予報コム- -FC2-
カテゴリ
月別アーカイブ
最新記事
最新トラックバック
検索フォーム
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。