9

randn 関数をシードしたいのですが、できません。

srand(time(NULL));
Mat mymat = Mat::zeroes(1024,1024,CV_32F);
randn(mymat,0,1); 

mymat、という名前のランダムなマットを私に与えるべきではありませんmean = 0variance = 1?ただし、mymatすべての実行で同じ結果が得られます。

これは、 srandが機能すると主張するrandnのリンクです。

time(NULL) の代わりに別の数値を指定しようとしましたが、出力ランダムはすべて同じです。別のマシンから同じことを確認しましたが、最初のマシンと同じ出力が得られます。したがって、シードは機能しません。

ありがとう、

4

1 に答える 1

18

次のスニペットを使用して、OpenCV 関数のシードを設定できます。

cv::theRNG().state = seed;

マルチスレッド プログラムには微妙な点があります。OpenCV はスレッド ローカル乱数ジェネレーターを使用するため、同じスレッドからシードを (再) セットする必要があります。

于 2014-01-29T13:33:44.580 に答える