私は2つのデバイスを持っており、それらの間で乱数生成を同期する方法を探しています。同期化された乱数
その他の背景:2つのデバイスが接続され、一方のデバイスはデータセットを含むファイルを他方のデバイスに送信します。その後、データセットは両方のデバイスにロードされます。データは、さまざまなレベルでランダム化されて表示されます。私はデバイス間でディスプレイを同期させたいが、まだランダム化されている。
概念的な例:写真を積み重ねてください。スタックのコピーがリモートデバイスに送信され、将来の使用のために保存されます。スタックは両方のデバイスで同じ方法でシャッフルされ、各デバイスで最初の画像を描画すると同じ出力が得られます。これはあまり単純化されていますので、私のアプリケーションで必要な乱数ははるかに多くなります。ソート順を共有するなどの最適化は適用されません。
簡単な乱数プール2台のデバイスで私はデバイスが同期する前に何回ランダムドローが起こるか分かりませんが、一度同期すると、同じデータセットを使用しているので同じ数の乱数を描画することは予測可能であるはずですが、 (ランダムデータの再同期を必要とする)次のバッチに進む前に、
私は、表示時に既にデータセットに転送されているエンティティごとにソート順、位置情報などを転送する必要がないようにしたいと考えています(これは、プロジェクトが最初にその情報を共有するように設計されていない同じ配置を生成することができ、乱数が同じ順序で出現する必要があります。
ご意見やご提案をいただければ幸いです。
すべての回答に感謝します。最初の試み(両方のデバイスで同じシードを使用していた)は、私が追跡していないもので投げ捨てられていましたが、現在認識していますので、シードを設定するだけで何が消えるか分かります私がまだ見つけていないどこかでそれをリセットする...)。しかし、私がこのシステムをクロスプラットフォームに移植し始めると、自分のLCGを実装するというOscarMkの提案は、OSとOSの不一致などを最小化する方法になると思います。 – ima747
私はまったく同じことをしようとしており、テスターの中にはランダムに生成された要素が同期しなくなることがあるという報告があります。これは非常にうんざりです。なぜなら、私はrand()を使った後にシードするだけなので、何が起こっているのか分かりません。異なるiDevices(またはiDevicesとシミュレータ)が異なるrand()実装を持つことは可能でしょうか? –