srand()/rand()
事前定義されたシードを使用して、サードパーティのライブラリで呼び出しが広く使用されています。同じプロセスで異なるライブラリを組み合わせると、問題が発生します。呼び出しの正しい順序を確認するのが難しい場合があり、srand()
とのrand()
呼び出しが混在する可能性があります。もう 1 つの問題は、アプリケーション レベルでシード値を選択できないことです。原則として、ライブラリ(オープンソースを含む) での使用を避けsrand()
、シードのタスクをアプリケーションに任せるべきですか?
2 に答える
1
あなたが言及した理由のために、とりわけ、実際のアプリケーションではboost::random
、C++11random
ライブラリを使用することをお勧めします
于 2013-02-14T20:15:15.247 に答える
0
ライブラリがハードコードされたシードを使用している場合、はい、それらのシードを、シードとして「十分にランダム」であると宣言するものに変更する方法が必要です。
また、/dev/urand のようなプラットフォームを使用している場合は、おそらくそれを使用できます。または、マルチプラットフォームである必要がある場合は、OpenSSL の乱数ライブラリのようなものを使用しないでください。OpenSSL はおそらく、対象とするすべてのプラットフォームで利用できるはずであり、多くの場合、既にインストールされているため、リンクするだけで済みます。
于 2013-02-14T20:07:46.257 に答える