如何播种randn函数opencv

smt*_*tsp 5 c++ random opencv random-seed

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

srand(time(NULL));
Mat mymat = Mat::zeroes(1024,1024,CV_32F);
randn(mymat,0,1); 
Run Code Online (Sandbox Code Playgroud)

它不应该给我随机垫,名字mymat,其中mean = 0,和variance = 1.但它不是那样的.它mymat在每次运行中都是相同的.

这是randn的链接,声称srand工作.

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

谢谢,

And*_*aev 13

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

cv::theRNG().state = seed;
Run Code Online (Sandbox Code Playgroud)

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

  • 尝试cv :: getTickCount()而不是time(NULL) (5认同)