0

シミュレーション モデルで 2 つの Uniform Random Number ブロックを使用しましたが、プログラムを実行するたびに最後の数値が生成されます (まったく同じです)。新しく生成された数値でモデルをテストする必要があります。私は何をすべきか?

事前にご協力いただきありがとうございます

4

1 に答える 1

3

乱数ジェネレーターが「最初から」同じ乱数を生成するという事実は、バグではなく機能です。これにより、再現可能なテストが可能になります。毎回異なる結果を得るには、乱数ジェネレーターを「乱数シード」で初期化する必要があります。たとえば、現在の時刻を使用できます。その場合、使用したシードを保存することをお勧めします。これは、戻ってまったく同じコードを再度実行できることを意味します。

ランダムシードを初期化するには、この以前の回答に記載されている方法を使用できます

その答えでは、彼らはシードを設定しています0- これはあなたがやろうとしていることの反対です。非乱数 (日付など) を生成し、それを使用する必要があります。非常に役立つ記事がここにあります。引用するには:

新しい MATLAB セッションで rand、randi、または randn からの出力を見ると、MATLAB を再起動するたびに同じ数列が返されることがわかります。実際に MATLAB を再起動せずに、乱数発生器をその起動状態にリセットできると便利なことがよくあります。たとえば、乱数を含む計算を繰り返して、同じ結果を得たい場合があります。

彼らはコマンドをお勧めします

rng shuffle

新しいランダム シードを生成します。で使用されたシードにアクセスできます

rng.seed

将来の使用のためにそれを保存します。だからあなたが一緒なら

rng shuffle
seedStore = rng.seed;

次に結果を再現したいときは、次のように設定します

rng(seedStore);
于 2013-04-19T18:28:40.127 に答える