|
カテゴリ:更新
データから法則を見つけ出す方法について、書き上げ。
1.データを取る。 2.エクセルに入力。 3.基本的に↓のようなパターンのどれかになる。 4.とりあえず、平均値等から適当に数値をつっこむ。 5.綺麗な係数発見。 6.全ての数値において、その式が成り立つことを確認。 7.6の時に出た例外を考察。 8.予測を立てた上で、例外となるような条件化で、実測。 9.できれば、職も装備も違うサブで、対象となるMOB等も変えて、実測。 10.法則発見。(→ダメなら7へ) ちなみに、画像の 系列1(青色)はf(x)=ax 例:力と攻撃力の関係 系列2(桃色)はf(x)=a(x^b) 系列3(黄色)はf(x)=a(b^x) 系列4(水色)はf(x)=a(log b cx) 例:知恵と経験値ボーナスの関係 なお、上限や下限があったり(例:エンチャント確率)、知恵と経験値ボーナスみたいに、○○~△△まで一定で、△△+1~□□まで一定等もあります。 そして、プログラムの処理的に、簡潔な係数になる可能性が非常に高いと思われます。 確かにレベルの低い間は別途数値を用意してあることはありますが、全ての場合において、数値を個別に用意しているなんてことはありません。 法則性がどこかにあるはずです。がんばって探してみてください。 その他法則性の見つけ方。 まずは、全ての数値に共通する最大公約数で割ってみる。 たとえば、経験値計算なら10で割ってみる。 25、49等のx^2が出てくる場合は真っ先に√してみる。 1.足し算タイプ f(n+1)-f(n)をならべてみる。 g(n)=f(n)-f(n-1)として、g(n+1)-g(n)を並べてみる。 2.総計タイプ Σf(n)を並べてみる。 3.乗数タイプ f(n+1)÷f(n)をならべてみる。 または、f(2n)÷f(n)を並べてみる。 4.対数タイプ log(n)を並べてみる。 底は2かeが主。 5.その他 ・綺麗な数値が出ているnを探し、(たとえば、そこだけぴったし2分の1とか) そのときのnとf(n)を並べてみる。 ・とりあえず、全てのf(n)-f(m)と、f(n)/f(m)を並べてみる。 これらを使うと、たとえば、ギルド経験値の場合、 250 1190 2560 5000 10360 14280 ・・・ ↓10で割る。 25 119 256 500 1036 1428 ↓タイプ2 25 144 400 900 1936 3364 ↓√する。 5 12 20 30 44 58 のように簡潔になる。 なお、簡潔な数値が出たからといって、検証結果が2~3個しかない場合には、間違っていることを考慮すること。 ・ぶれがある場合(1000回検証して、250回だったとか)は、ぶれを考慮すること。 ・たとえば、100 132 174 230 305 ・・・ で変化する数列の場合、 99~100 131~132 173~174 229~230 304~305 ・・・の間で変化することを考え、おおよその計算方法を考え付いたあとは、99と100を式にいれ、99だと少し足らず、100だと少しオーバーするようにすること。(99でもオーバーする場合、数値は99で変化するため。 ・計算方法にはintが入っている可能性が高いので、結果から元の数値を予測するのではなく、元の数値から、結果を考えてみること。 長くなって、自分でも何書いたか分からなくなってきた・・・ここらでやめるか・・・ お気に入りの記事を「いいね!」で応援しよう
|