質問

私はカードゲームに取り組んでおり、非常に良い仕事をし、ゲームが実行されるたびに異なるため、予測可能なカードシーケンスを持たないように、シャッフルアルゴリズムが必要です。

私はMersenne Twisterアルゴリズムを使用していますが、それでもシードが必要なので、実際には多くの数が生成されますが、時間(null)を使用してシードを使用しているため、ゲームのシーケンスは1000しかありません。どのように播種する必要がありますか?

役に立ちましたか?

解決

私の標準的な播種技術:

  1. もしも /dev/urandom 存在し、そこから種を読んでください。

  2. Windowsにいる場合は、使用してください CryptGenRandom().

  3. 他のすべてが失敗した場合は、使用してください time().

(あなたのMersenne Twisterがどこから来たのかはわかりませんが、新しい標準ライブラリには1つあります <random> これは非常にエレガントに統合されています。)

最初の2つのステップでカバーされていないプラットフォームの提案を聞いてうれしいです!

他のヒント

使用できます オペレーティングシステムのエントロピー源 適切な乱数シードを取得するには。 Windowsでは、そうです Cryptoapi; Posixで、からバイトをプルします /dev/urandom.

典型的な種子値は、64ビットの現在の時間で32ビットが低いことです。たとえば、Linux GetTimeOfDayコールの返品値を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top