検証スレッドログ倉庫
τρ 検証スレッド5 οκ
- 444 名前: 名も無き軍師 投稿日:2003/11/11(火) 22:23 ID:ZS2U1Kj.
- まぁパチンコ・パチスロやメダルゲームもそうだが、乱数だの倍数だのの分母に
16進数使うのってプログラムとしては当たり前なんだよな。
ちょっとコンビニ行ってその手の雑誌見れば256分のいくつとか65536分のいくつとか
普通に書いてあるんだから今まで気がつかなかったオレらが間抜け。
グラビデやディア2なんかも13/256とか26/256になってると予想できる。
- 445 名前: Morgan 投稿日:2003/11/12(水) 04:11 ID:0y1zi2PU
- >流れを無視した遅レスで悪いが
>レベルアップで上昇するステータスの計算式を考えれば
>素のステータスに小数点以下が存在することは容易に想像できる。
レベルアップで上がるステータス(STR他)は、ジョブ・種族・サポ
ジョブステータスを独立して切り捨てしてから加算してあるから、
レベルが1上がると2上がるポイントがある。切り捨て前に加算して
あるならそうならない。
当時、それを足がかりにして式の予測をしたのでよく覚えてる。
- 446 名前: 名も無き軍師 投稿日:2003/11/12(水) 11:19 ID:lG.6M7CQ
- >>445
ステータス算出の計算途上で小数を考慮するかと、計算結果の値の小数含めてステータス値とするかは別の問題。
個人的には小数まで考慮してると思うが、突きつめてもあまり益が無い。
というのはだな。
小数考慮するとして、小数演算はコストがかかるので内部的には数倍した値の整数として保持してるだろう。
10倍で保持すれば実質小数第一位(0.1単位)まで値を持ってることになるのは分かるよな。
ここで、倍数は10倍100倍などとは限らず、16倍256倍かもしれないわけだ(こっちのが計算は速い)。
8倍で保持してれば、2進数の小数第三位に相当する。十進数で書けば 1/8 = 0.125 になる。
計算に使ってる単位数が 0.1 か 0.125 かまで判別するのってかなりの徒労だと思わない?
- 447 名前: 名も無き軍師 投稿日:2003/11/12(水) 13:31 ID:PhfIn.tI
- >>446
@計算途上:少数あり 結果:少数あり
A計算途上:少数あり 結果:少数なし
B計算途上:少数なし 結果:少数なし
ありうるのはこの3種、>>445はBだと言ってるのに、
Aの線を追求するのは徒労だ、と語りかけてどうする気なんですか?
- 448 名前: 名も無き軍師 投稿日:2003/11/12(水) 13:37 ID:eHNGr2mo
- いや、これまでの検証結果からみて
和減演算には少数ナシ
乗除演算には少数あり
だとおもってるんだが・・・
どうだろう?
- 449 名前: 446 投稿日:2003/11/12(水) 13:47 ID:lG.6M7CQ
- >>447
丸数字だかローマ数字だか知らないけど、表示されません。
で、>>445 を読み返して勘違いしてたのに気づいた。
>>446 は >>445 と全く関係ないな。
鬼の首とったように小数小数叫んでる人に、0.1 か 0.125 か問い詰める時に使ってくれ。
- 450 名前: 名も無き軍師 投稿日:2003/11/12(水) 15:03 ID:wYCAbl9E
- 倍率関係が n / 256 かもしれないらしいので、魔攻UPを調べてみました。
魔攻+1
1.20 * 256 = 307.2
307 / 256 ? ( = 1.19921875 )
魔攻+2
1.24 * 256 = 317.44
317 / 256 ? ( = 1.23828125 )
318 / 256 ? ( = 1.2421875 )
魔攻+3
1.28 * 256 = 327.68
327 / 256 ? ( = 1.27734375 )
328 / 256 ? ( = 1.28125 )
んで、実際の値とあっているのか調べようと思ったんですが、データがみつかりませぬ (´・ω・`)
- 451 名前: 名も無き軍師 投稿日:2003/11/12(水) 15:06 ID:NTXGeO9E
- 物理防御UPが+10とかの時点で、論じる意味無さそうだが。
- 452 名前: カニ戯れ男 ◆Wi6tEjhs 投稿日:2003/11/12(水) 15:08 ID:ILaWxoeE
- 久しぶりに覗いてみたら、なんかよく分からんことを議論してるなぁ
>>448
そりゃ当たり前だ
整数型変数同士でも乗除演算すりゃ結果は浮動小数になる
問題は、その浮動小数な結果を代入する先が整数型変数か浮動小数型変数か、だ
っていうか「少数」ってなんだよ、、、
- 453 名前: 名も無き軍師 投稿日:2003/11/12(水) 15:26 ID:eHNGr2mo
- うあ、「少数」ってはずかち〜
いいたい事は、大雑把に見積もって
A/B+C/D ってなって、結果が整数のとき
整数化する場所が
INT(A/B+C/D)
ではなくて
INT(A/B)+INT(C/D)
になることが多いよね?ってこと
和減演算に演算前に各項を一度全部整数化する
共通ルーチンがあるのかも?って考えてた
- 454 名前: カニ戯れ男 ◆Wi6tEjhs 投稿日:2003/11/12(水) 15:55 ID:ILaWxoeE
- >>453
>になることが多いよね?
いや、寡聞にしてそんなことが多いなんて知らんな
それに「A/B+C/D」が「(A*D+B*C)/(B*D)」と計算されてるかも知れんしな
「A/B」や「C/D」がそれ自体で独立したステータスなどであれば、
「INT(A/B)+INT(C/D)」と計算してるかも知れないが、
そうでなければいちいち整数化なんてしないだろうに、、、レジスタの無駄にならんか?
そもそもプログラミングで速度を優先してるのか、それともメモリ優先なのか
その前提がさっぱりわからんからな、どうしようもないだろ
>和減演算に演算前に各項を一度全部整数化する
>共通ルーチンがあるのかも?って考えてた
w
- 455 名前: 名も無き軍師 投稿日:2003/11/12(水) 16:11 ID:lG.6M7CQ
- >>453
言語とコンパイラによるなぁ。
C言語だと、整数型同士の演算は整数なので、
int a=3; int b=2;
float f = a/b;
とした時に f=1.0 になる。a/b = 3/2 = 1 な。
より高級な言語だと、除算は問答無用に小数にしてくれるのもあったような。
とりあえず確証は無いが自信を持っていえることは、
除算を全て整数にする専用のルーチンなんぞ用意していないであろう。
ということだ。
整数か小数かで結果は変わるけれどそれは1とか2とかだけ。
ともかく式を立ててみて、それをデータと突き合わせてみる。
いくつかが、1,2くらい誤差があるようなら、小数のまるめこみの可能性を考慮すればよいかと。
- 456 名前: 名も無き軍師 投稿日:2003/11/12(水) 16:15 ID:hWabfQgE
- 過去スレを読んでいて思ったこと。
カニ男は、だんだん文章が尊大になってきてるなーw
ま、検証がんばってくれ。
- 457 名前: 名も無き軍師 投稿日:2003/11/12(水) 16:19 ID:QZY54omY
- 頼む!誰かまとめサイトつくってくれ!www
- 458 名前: カニ戯れ男 ◆Wi6tEjhs 投稿日:2003/11/12(水) 16:22 ID:ILaWxoeE
- >>456
>だんだん文章が尊大になってきてるなーw
過去スレの読みが甘い
自分で取ったデータに関する議論以外は
昔から常に尊大な口調だったよ
- 459 名前: 名も無き軍師 投稿日:2003/11/12(水) 16:51 ID:eHNGr2mo
- おれがヘタレなのか?
いまの大規模プログラム開発で
レジスタの無駄とか速度優先とかメモリ優先とか考えないでしょう
どちらかというと、開発効率優先?
修正のしやすさ、多人数でのプログラムのしやすさ?
で、そのためにルーチンの共通化
まあ
>和減演算に演算前に各項を一度全部整数化する
>共通ルーチンがあるのかも?って考えてた
って表現は乱暴すぎるけど
たとえば、スキル構造体ってのがあって
整数部と小数部を別々に保持してたりすると
この構造体の四則演算はコンパイラに付属している演算子は使わないで
独自のルーチンによる計算手法が組まれてるでしょう
このようなの計算方法に一種独特な手法が使われている
可能性も考えていいのでは?ってこと
>整数か小数かで結果は変わるけれどそれは1とか2とかだけ。
>ともかく式を立ててみて、それをデータと突き合わせてみる。
>いくつかが、1,2くらい誤差があるようなら、小数のまるめこみの可能性を考慮すればよいかと。
式が単純な場合なら1,2の違いですむけど
例えば命中率が
スキル差に関する計算 + DEX差に関する計算 + AGI差に関する計算 + 歌、魔法の効果
とかで、最大10程度になるように計算されてた場合
その整数化誤差が0-4まで幅広くなるわけで
コレが測定解析時の混乱を招くかも
- 460 名前: 名も無き軍師 投稿日:2003/11/12(水) 17:28 ID:lG.6M7CQ
- >>459
漏れ自身はLinuxでオープンソース開発してるような人間なので、言わんとすることはよく分かるが、
ゲームプログラミングと業務用プログラミングは昔も今も別の物。
FF11のサーバープログラムにはそういった開発保守効率を上げる手法を入れる余裕も必要もあるだろうけど、
計算の部分ではゲーム由来のCPU効率を考えてるらしいのは256分率使ってるとこからも分かる。
しかし、整数部と小数部を別に保持する構造体なんて例えにしても苦しいぞ。
- 461 名前: カニ戯れ男 ◆Wi6tEjhs 投稿日:2003/11/12(水) 17:42 ID:72HcDuZY
- >>460
>ゲームプログラミングと業務用プログラミングは昔も今も別の物。
んー、ホントのとこはどうなんだろ?
ゲームとはいえ、ここまで巨大化しちまったら
もうマニュアルチューンなんで無理だと思うんだよね
もちろん1人で書くことも
そうなると業務用と同じで開発効率、見通しの良さ、テストしやすさw
なんかを優先してるんじゃないかなぁ
あとは高速化に関しては、もうコンパイラ頼みでw
コンパイラが速いコードを吐いてくれるような書き方を心がけるくらいじゃね?
>整数部と小数部を別に保持する構造体なんて例えにしても苦しいぞ
速度を超優先する科学技術計算の分野では普通なんだがな
ま、特殊っちゃ特殊だわなw
- 462 名前: 名も無き軍師 投稿日:2003/11/12(水) 18:23 ID:2OPRo6yY
- >>458
尊大な口調でレスしたら、相手に泣かれたもんで
あわててフォローしてたこともあったなぁw
- 463 名前: 名も無き軍師 投稿日:2003/11/12(水) 18:34 ID:lG.6M7CQ
- >>461
特殊っつうか、数値計算では 要求精度 >>>>>> 速度
その構造体はそういう要求環境で必要とされるテクニックだろう。
FF11で小数以下の計算精度を維持する必要がどれだけあるの?
金融分野では兆のオーダーの正確な整数計算が必要とか、
組み込み分野ではミリ秒単位の正確なハード制御が必要とか、
いくらでも持ってこれるけれど、前提の違う他分野の「常識」を持ち出す行為自体が詭弁術。
というかね、ある分野の専門家がその権威を維持したまま他分野に口出す(オルテガ)態度ってかなり嫌悪するのでね。
明示的に指摘しておくけど、>>452
整数/整数は数値計算以外の多くのプログラミングの世界では整数な。