したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

RUINATERRA開発スレッド

192大怪盗ゴロツキーヌ:2005/05/27(金) 02:26:37 ID:no.j4/66
レンさんの最新版データで木の剣しか出ない問題の原因はオーバーフローじゃなくて、
rand関数の最大値が32767な事が原因みたいです。
0〜32767をrareで割った余りはrareがいくつだろうと32768以上にはなりませんわな。

なりふりかまわないんなら
Game::AtackAndKillEnemy 関数の
rare=rand()%rare;

rare=(rand()*rand())%rare
とか
rare=(32767*rand()+rand())%rare
とかすれば直ると思います。

私は数学がさっぱりわからないので
これで確率の偏りはがどう変わるかはわかりませんが、
もともと正確なアルゴリズムじゃない(例えばrareが2万くらいだと前半のアイテムの出現率が後半のそれの2倍になる)ので
あんまり気にしなくてもいいかなとも思うのですが、それじゃ駄目ですか、駄目ですか。そうですか。

rand関数が0〜1の乱数を返してくれればrare=(int)(rare*rand())で済むのに、Cは面倒ですにゃあ。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板