サードパーティのライブラリには、srand()/rand()
コールが広く使用されています。この問題は、同じプロセスで異なるライブラリを組み合わせるときに発生します。適切な通話順序を確保するのが難しい場合もありますが、srand()
とrand()
のコールが混在する可能性があります。もう1つの問題は、アプリケーションレベルでシード値を選択できないことです。一般的な規則として、をライブラリに入れないでください(オープンソースを含む)(アプリケーションにシードする作業は任せていますか?ライブラリでsrand()を使用する際の問題
答えて
ライブラリでハードコードされたシードが使用されている場合は、シードになるように「十分にランダム」と宣言するようにシードを変更する必要があります。
また、/ dev/urandのようなプラットフォームを使用している場合は、おそらくそれを使用することができます。また、マルチプラットフォームにする必要がある場合は、OpenSSLの乱数ライブラリなどを使用しないでください。 OpenSSLは、ターゲットとしているすべてのプラットフォームで利用できるはずです。すでにインストールされていることが多いため、リンクするだけで済みます。あなたが言及した理由から
この場合、唯一の方法はサードパーティのライブラリを変更することです。それは新しいバージョンへの容易な移動を複雑にします。 –
@DavidKhosid次に、ライブラリがひどく書かれている場合は、ライブラリを変更しないでください。 – Plecharts
実際には、この設計上の欠陥(objdump)をすべてのサードパーティライブラリで検索し、プロジェクトに取り込むすべてのバージョンのライブラリを変更する必要があります。私はライブラリがsrand()を無条件に呼び出さないほうがいいです。 –
、とりわけ、それはdoesnのあなたは、この世紀に設計されたランダムなAPIを使用することができboost::random
またはC++ 11 random
ライブラリ
C++ 11のランダム性は素晴らしいですが、サードパーティのライブラリはsrand()呼び出しでランダム性を管理します。 –
boost :: randomがsrand/randを使用していることを確認するソースが見つかりません。あなたはこの主張への参照を提供できますか? – eladidan
boost :: randomに問題はありません。他の多くのオープンソースライブラリ、例えばZLIBには問題があります。 –
- 1. FMODライブラリを使用する際の問題
- 2. WindowsでMinGwを使用してImageMagickライブラリをリンクする際の問題
- 3. Androidプラットフォーム用の共有ライブラリを作成する際の問題
- 4. カスタムビットマップフィールドを使用する際の問題
- 5. Kerasを使用する際の問題
- 6. CCCameraを使用する際の問題
- 7. StreamReader.EndOfStreamを使用する際の問題?
- 8. STUFFを使用する際の問題
- 9. StringBuilderを使用する際の問題
- 10. スマートロケーションライブラリを使用する際の問題
- 11. lapackライブラリとfftw3ライブラリをリンクする際の問題
- 12. Androidで共有ライブラリのクラスをエクスポートする際の問題
- 13. IntellijでScalaライブラリをインポートする際の問題
- 14. PIP経由でPythonライブラリをインストールする際の問題
- 15. Javaで共有ライブラリをロードする際の問題
- 16. Ubuntuでg ++とライブラリをリンクする際の問題
- 17. Fedora 25でAndroid用React Nativeを使用する際の問題
- 18. PySDL2を使用してSDL_QueryTextureを使用する際の問題
- 19. Ubuntuでwgetでプロキシを使用する際の問題
- 20. PythonでAWS LambdaでMySQLを使用する際の問題
- 21. ライブラリ内のSVM関数でffを使用する問題(e1071)
- 22. WebkitライブラリをCで使用するときの問題#
- 23. AutoValueライブラリのサンプルプロジェクトをコンパイルする際の問題
- 24. plyr Rライブラリの 'ddply'コマンドを実行する際の問題
- 25. 私のコードで "SequenceFilesFromDirectory"を使用する際の問題
- 26. arbor.jsで画像を使用する際のパフォーマンスの問題
- 27. UWPでSqlite.Netを使用する際のパフォーマンスの問題
- 28. Tomcatで2つのOSGIアプリケーションを使用する際の問題
- 29. 複数行のテキストボックスでASPNetSpellを使用する際の問題
- 30. 複数のRSSフィードでzrssfeedを使用する際の問題
*または*を使用するように現実のアプリケーションでは、より良いプラクティスです単一のグローバル*シードに依存していません。実際、 'rand()'はひどく壊れていて、ひどく設計されていて、ひどくAPIを実装していません。あなたのライブラリがランダムジェネレータを必要とする場合は、まともなものを使用してください。プロセスのグローバルな状態は乱されません。 – jalf
アプリケーションデザイナのPOVから、オープンソースライブラリのsrand()が私の問題です。セキュリティレベルのランダム性は必要ありません。 –
適切なライブラリがあれば、実際のユーザがsrand()を呼び出す必要があります。 srand()が呼び出されたサードパーティのものを使用する場合は、これが非常に悪い習慣であり、世界をより良い場所にするように教えてください:) –