我想知道如何生成任意给定大小的随机数矩阵,例如2x4
。矩阵应包含范围内的带符号整数,例如[-500, +500]
。
我已阅读RNG的文档,但我不确定如何使用它。 我也提到了question,但这并没有为我提供我正在寻找的解决方案。
我知道这可能是一个愚蠢的问题,但任何有关它的帮助都会得到真正的赞赏。
答案 0 :(得分:9)
如果您想要将值统一分发,可以使用cv::randu
Mat1d mat(2, 4); // Or: Mat mat(2, 4, CV_64FC1);
double low = -500.0;
double high = +500.0;
randu(mat, Scalar(low), Scalar(high));
请注意,上限是独占的,因此此示例表示范围[-500, +500)
中的数据。
如果您希望正常分发值,您可以使用cv::randn
Mat1d mat(2, 4); // Or: Mat mat(2, 4, CV_64FC1);
double mean = 0.0;
double stddev = 500.0 / 3.0; // 99.7% of values will be inside [-500, +500] interval
randn(mat, Scalar(mean), Scalar(stddev));
这适用于最多4个通道的矩阵,例如:
Mat3b random_image(100,100);
randu(random_image, Scalar(0,0,0), Scalar(256,256,256));