如何播种randn函数opencv

时间:2014-01-29 13:12:09

标签: c++ opencv random random-seed

我想播种randn功能,但我无法做到。

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

它不应该给我一个名为mymat的随机垫,其mean = 0variance = 1?但是,它在每次运行中都会提供相同的mymat

以下是randn声称可以使用该作品的链接。

我试图给出不同的数字而不是时间(NULL),但都有相同的输出randoms。我从另一台机器检查了同样的东西,它给第一台机器提供了相同的输出。因此播种不起作用。

谢谢,

1 个答案:

答案 0 :(得分:13)

您可以使用以下代码段为OpenCV函数设置种子:

cv::theRNG().state = seed;

多线程程序有一个微妙之处 - OpenCV使用线程局部随机数生成器,因此您需要(重新)设置来自同一线程的种子。