0

matlab の normrnd 関数が 2 つの異なるマシンで同じ乱数のセットを生成することは可能ですか (シードが設定されていない場合)?

4

1 に答える 1

1

両方のジェネレーターが両方のマシンで同じ方法でシードされている場合 (たとえば、同時に起動され、現在の時刻でシードされている場合) である可能性があります。実際、コメントで述べたように、Matlab でのシードは現在の時刻ではないため、シードされていない場合は起動時に同じです。

  • 同じ一連の乱数を再現したい場合は、この例を見てください。現在のシードを保存して、後で再利用できます。

現在のジェネレーター設定を s に保存します。

> s = rng; Call rand to generate a vector of random values:

> x = rand(1,5)

> x =

    0.8147    0.9058    0.1270    0.9134    0.6324 

rng を呼び出して、元の発生器設定を復元します。ランダムな値の新しいセットを生成し、x と y が等しいことを確認します。

> rng(s); y = rand(1,5)

> y =

      0.8147    0.9058    0.1270    0.9134    0.6324
  • Matlab では、ジェネレーターも選択できます。Mersenne Twister として疑似乱数ジェネレーターを選択し、実行ごとに同じシードをシードすると、同じシリーズが得られます。

  • 実行ごとに異なる一連の乱数を使用したい場合は、 を使用rng('shuffle')して、開始時にクロック時間をジェネレーターにシードすることができます。

于 2013-05-04T07:12:31.573 に答える