GameTime貫通に挑戦中

0 Comments
かんなつき
取りあえずテンプレをコピペでいいと言われたので見てみる
なんか面倒なことしてんな。もっと簡単にならんか?
そもそも3乗式やfvarに対応できないじゃん
いまここ



というか、通常変数に限れば下の式で出したほうが早いんじゃね。やってるキャラもいそう



var=A*(gametime**3)+B*(gametime**2)+C*gametime+Dとする

abs(A)<gametime && abs(B)<gametime && abs(C)<gametime && abs(D)<gametime
※gametimeの係数の絶対値がgametimeより小さいときのみ成立
ほぼ大丈夫なはず。

1.var/(gametime**3)を四捨五入=3乗の係数=A
2.(var-A*gametime**3)/gametime**2を四捨五入=2乗の係数=B
3.(var-A*gametime**3-B*gametime**2)/gametimeを四捨五入=1乗の係数=C
4.(var-A*gametime**3-B*gametime**2-C*gametime)=gametimeのかからない係数=D



これなら1Fで割り出せる。(精度はガバガバなので信用しすぎちゃダメ)
もちろん、2乗式の時はA=0になるだけ。
変数も大幅な節約が可能

これを通常変数全部にやっていけば、通常変数全部を1Fで貫通できる。
変数4個で通常変数がめちめ60個を同時に貫通できると考えたら強そうに見えるけどどうなんだ?



難点は精度の低さか。gametimeとは全然関係ない変数も平気で巻き込んじゃうのも問題かな
精度が保てるのは2乗式以上だと思う。

当然だけどA=B=C=0になったら、GameTime変数じゃない
でもたまたま、どれかが0じゃなくなったら感知しちゃうわけで。
A=B=0の時もあんまり信用しないほうがいいと思う。
Bが出たら確率はかなり高いはず。

式を見ればわかるけど、4乗以上の式にも対応できる。そんなキャラ知らないけど




fvarは魔法の数字以外なら累乗係数保存で行けるんじゃないか?
例えば、がめちめ抜け変数のfvar=1.32なら一番深い係数は2桁なんだからfvarを100倍の132として係数を割り出す。
それと100倍したことも記憶する。10**XのXの部分の記憶でいい

観測中にさらに深くなったら、さらに10倍する。
記録してあった数も全部10倍すること。で、10**XのXを1増やす

gametime/3.0みたいに無限小数にされてた場合は、無理。


あとは連立方程式を解けば、係数は全部整数になってるはず。
そうすれば、求められた係数を10**-X倍すればいい。100倍にしたのなら0.01倍
整数の係数と、それに掛ける10**XのXの数字を保存すればおK
これで浮動しないでしょ。多分。保存も通常変数で可能だし


これを使えば、最初の1F割り出しもできるかも。
係数保存用の変数4つと、10**XのXの数字を保存する変数があればいける。


まあ、この程度のことは最上位神のみなさんは普通にやってるんだろうな。
自分の記述読解力が低くて調べられてないけどさ


素人なりにこうすればいいんじゃないか?と思って書いたので間違ってるかも


---追記--
GameTimeにかかる係数が大きいほど誤差が大きくなることが分かった

3次式なら4サンプルで算出可能だしそっちに任せよう


スポンサーサイト
かんなつき
Posted byかんなつき

Comments 0

There are no comments yet.

Leave a reply