1

リンク (fortran 77 コード) に記載されているように、RNG コードをテストしています:
https://www.cisl.ucar.edu/zine/96/spring/articles/3.random-6.html
Park & Miller アルゴリズムを適用します。 .

プログラムの関数呼び出しは

call srand(seed)  
x=rand()  

ただし、プログラムは srand() によるシードに応答していないようです。つまり、x 値は最初のシードの影響を受けず、常に ~0.218 に等しくなります。x の値は、データブロックで定義された初期化値である 123456789 としてシードを配置することと同等であるため、これは共通ブロックとデータブロックの定義に関係していると思われます。

何か案は?

gfortran でコンパイルしています。

4

1 に答える 1

1

わかりました、問題は元srandrand呼ばれる可能性があることです。関数の名前を and に変更するsrand2rand2、すべてが期待どおりに機能し始めます。

seed = 1結果はで7.82636926E-06ありseed = 2、結果は1.56527385E-05です。gfortran と Intel の fortran で確認しました。

于 2014-10-06T20:47:04.223 に答える