186: rndについて


最新状況

タイトル rndについて
状態 完了
カテゴリ バグ
作成日時 2011-01-06 15:11:38
最終更新日時 2011-02-27 00:02:57

履歴

1 | 2011-01-06 15:11:38 | 提案
k1220kita at yahoo.co.jp
バグかどうかはわからないのですが
起動後一回目のrndが変でうまく変化せず決まった値になってしまいます
二回目以降はきちんとランダムになるのですが
仕様なのでしょうか?
ちなみにnscripterではうまくできました

2 | 2011-01-06 22:11:41 | 受付済
ogapee at aqua.dti2.ne.jp
ご報告ありがとうございます。
どのプラットフォーム・バージョンをお使いでしょうか。


こちらで試してみたところ、Linux (gcc-4.4.4), Zaurus (gcc-2.95.2) では一回目から毎
回異なる値が得られます。

Windows (Visual Studio 2008 C++ 付属の cl) の場合は、おっしゃるように一回目の値が
ほぼ同じ値になります。乱数のシード値に time(NULL) の値を使っていますが、どうも 
cl ではシード値が近い値の場合に、最初の乱数値も近い値になってしまうようです。

rnd で指定する乱数の最大値を大きくすれば、一回目からほぼ同じですが異なる値が返っ
てくると思います。


以下のどちらかの方法で回避してください。

(1) 一回目の rnd の結果は捨てる

(2) ScriptParser.cpp の
    srand( time(NULL) );
の直後に
    rand();
を挿入し、ONScripter 側で一回目の乱数を捨てる


次回のリリースで (2) の修正をする予定です。

3 | 2011-01-07 02:43:34 | 受付済
k1220kita at yahoo.co.jp
Windows版とiPhone版で試していました
一応今は初回のrndを二回繰り返すようにしています
対応して下さるとのことありがとうございました

4 | 2011-01-08 18:54:01 | 修正済
ogapee at aqua.dti2.ne.jp
乱数の系列を srand() で初期化した直後の最初の乱数値を捨てるようにしました。

20110108 以降で修正済みです。ご確認ください。

5 | 2011-02-27 00:02:57 | 完了
ogapee at aqua.dti2.ne.jp
おそらく解決されたと思いますので、本報告は完了とさせていただきます。

[リプライをつける]
Bug Tracking System 影舞 0.8.8
Powered by Ruby 1.8.7