スペースをランダムに塗りつぶす/覆うことができるサンプルポイントを生成したいと思います(添付の画像のように)。このようなサンプル点を生成できる「準ランダム」という方法があると思います。しかし、それは私の知識とは少しかけ離れています。誰かが提案をしたり、これを行うことができるライブラリを見つけるのを手伝ってくれませんか? または、そのようなプログラムを書き始める方法を提案しますか?
この画像では、256 個のサンプル ポイントが指定された空間に適用され、指定された空間全体をカバーするようにランダムな位置に配置されています。
更新: Halton Quasi-random Sequence のコードをいくつか使用して、以下の友人が投稿した疑似乱数の結果と比較してみました。私の意見では、ハルトンの方法の結果の方が優れています。以下にいくつかの結果を共有したいと思います。
私が書いたコードは
#include "halton.hpp"
#include "opencv2/opencv.hpp"
int main()
{
int m_dim_num = 2;
int m_n = 50;
int m_seed[2], m_leap[2], m_base[2];
double m_r[100];
for (int i = 0; i < m_dim_num; i++)
{
m_seed[i] = 0;
m_leap[i] = 1;
m_base[i] = 2+i;
}
cv::Mat out(100, 100, CV_8UC1);
i4_to_halton_sequence( m_dim_num, m_n, 0, m_seed, m_leap, m_base, m_r);
int displaced = 100;
for (int i = 0; i < 100; i=i+2)
{
cv::circle(out, cv::Point2d((m_r[i])*displaced, (m_r[i+1])*displaced), 1, cv::Scalar(0, 255, 0), 1, 8, 0);
}
cv::imshow("test", out);
cv::waitKey(0);
return 0;
}
私はOpenCVに少し慣れているので、このコードをOpenCVの行列(Mat)上にプロットして書きました。「i4_to_halton_sequence()」は、前述のライブラリの関数です。
結果は良くありませんが、私の仕事には何とか使えるかもしれません。誰か別のアイデアがありますか?