【发布时间】:2023-04-05 12:07:01
【问题描述】:
我想在矩形上均匀地生成点(x,y)。首先你输入 minX 和 maxX 和 minY maxY 然后你统一生成 (x,y),下面显示的基本代码有没有更好的方法来实现它? (我需要它以蒙特卡罗方法来制作情节)
#include <iostream>
#include <random>
double drand(const double min = 0., const double max = 1.)
{
return (max - min) * static_cast<double>(rand()) / static_cast<double> (RAND_MAX)+min;
}
int main(int argc, char **argv)
{
for(unsigned short int i=0;i<1000;++i)
{
std::cout << "x " << drand(minX, maxX) << std::endl;
std::cout << "y " << drand(0., maxY) << std::endl;
}
return 0;
}
【问题讨论】:
-
“更好”在什么意义上?
-
对于初学者来说,设置种子可能是有意义的,但我同意 blackbird。
-
你不需要两个循环吗?一个在 x 上,一个在 y 上的内循环。