我想播种randn函数,但无法执行。

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

是否应该给我一个名为mymat,其mean = 0variance = 1的随机垫?但是,每次运行都会给出相同的mymat

这是randn的链接,它声称能起作用。

我尝试给出不同的数字而不是time(NULL),但是所有的随机数都相同。我从另一台机器检查了同样的东西,它与第一台机器给出了相同的输出。因此播种不起作用。

谢谢,

最佳答案

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

cv::theRNG().state = seed;

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

08-24 21:55