0

プログラムでC++関数を使用していますが、ループでrand()使用した後にプログラムを実行すると、プログラムが非常に遅くなることがわかりました。rand()ループは何度も繰り返さtime()れ、 のシードとして関数を呼び出しますrand()

では、C++rand()time()関数が多くのシステム リソースを消費するのではないかと考えています。

4

1 に答える 1

2

2つのこと:

1 - ループの反復ごとに rand() をシードすると述べました。これは、前の出力によってシードされるように設計されているため、PRNG のパフォーマンス (統計的パフォーマンス) を低下させる可能性があるため、不要なだけではありません。PRNG を 1 回だけシードしてから、(のみ) rand() を呼び出します。各呼び出しでシードを自動的に更新します。

2 - rand() は確かに遅いです。統計要件に応じて、厳密ではないにしても、rand() 関数を再実装するだけです。単純な PRNG は、ロジスティック マップから作成できます。

幸運を!

于 2013-07-21T13:56:49.010 に答える