System.Random
オブジェクト (Silverlight)に対するさまざまなプラットフォームの影響を知る必要があります。Mac、PC、および 32/64 ビットで作成されたシーケンスは同じですか?
2 に答える
「ばかげた」答えですみませんが、私の考えでは、乱数は常にランダムと見なされる必要があるため、作成されたシーケンスは「ドメイン」全体で同じではないものとして処理する必要があります。.NET (または Silverlight) の乱数ジェネレーターは、シード値に応じて疑似乱数アルゴリズムを使用し、同じシード値を使用すると同じ数列を生成することは知っていますが、この事実に依存するつもりはありません。
複数のプラットフォーム間で乱数を同期する必要がある場合、ある種の「期待」があるようで、期待される値のシーケンスに乱数ジェネレーターを使用するのは奇妙に見えます。
ユースケースについて詳しく教えていただければ、別のより確実なソリューションを見つけることができるでしょうか?
私の意見です。
乱数を生成するアルゴリズムは、ランタイムにエンコードされます。したがって、プラットフォームに関係なく、特定のシード値に対して同じ「乱数」のセットが表示されるはずです。
(シード値が時間ベースである)の既定のコンストラクターの正確な動作はRandom
、プラットフォームごとにわずかに異なる場合があります。たとえば、 のインスタンスを迅速に作成Random
すると、同じシーケンスを生成するいくつかのインスタンスが作成される場合があります。これらの「重複」の分布は、プラットフォームを含むあらゆる種類の条件で異なる場合があります。