0

Windows、Visual Studio 2010で、randを使用していくつかの「乱数」を取得しています。

私が含めて使用しているメインファイルには、次のものがあります。
srand(time(NULL))

そして別のファイルでは、オブジェクトのコンストラクターで
オブジェクトはOpenGL関数(Init、Render)で使用されるため、グローバルに定義されます)
rand()%boundを10回呼び出し、両方ともラップトップで同じ結果を取得していますとデスクトップ。

これは、メインからrandをシードする前に作成されたオブジェクトが原因である必要があります。

どうすればそれを回避し、オブジェクトをグローバルに保つことができますか?

4

1 に答える 1

2

グローバルオブジェクトのコンストラクターで、srand(time(NULL))を使用する前に実行しrandます。または、静的ストレージ期間を持つ別の非ローカルオブジェクトがありsrand(time(NULL))ます。同じ翻訳単位で定義されていることを確認してください。ただし、を使用するオブジェクトの前に定義してくださいrand。静的ストレージ期間を持つ非ローカルオブジェクトは、定義順に初期化されます。

于 2013-02-16T15:59:46.970 に答える