c++ - 在矩形上均匀生成点(x,y)

标签 c++ math random uniform

我想在矩形上均匀地生成点(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;
}

最佳答案

您正在使用 rand()。您的障碍并没有那么高,因为几乎任何东西 都比 rand() 好。既然你显然有 C++11,你为什么不使用 C++11 提供的更高级的随机数生成器?例如,

#include <random>

double drand(const double min = 0., const double max = 1.)
{
   static std:: mt19937_64 mt_generator(std::random_device());
   static std::uniform_real_distribution<double> u_0_1(0.0, 1.0);

   return min + (max - min) * u_0_1(mt_generator);
}

关于c++ - 在矩形上均匀生成点(x,y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20656129/

相关文章:

c# - 如何确定所有排列 &|层次结构中的组合

javascript - 除法和四舍五入

random - 如何在 Tableau 中生成伪随机数和行计数

javascript - 与express js一起使用的synchronize.js

c++ - Opengl 对象挤压

c++ - 创建具有根访问权限的 CLI 应用程序

python - 使用NumPy最小化此错误功能

java - 每次都得到相同的随机数

c++ - 错误 C2059 : syntax error : 'constant'

c++ - CMake 没有那个文件或目录