在[0,1)C 之间生成一个随机数

Generating a random number between [0,1) c++

本文关键字:随机数 一个 之间      更新时间:2023-10-16

我正在尝试生成一个随机数,该数字均匀分布在[0,1(之间,并且我尝试了Surifter_Real_distribution,但我不知道该如何工作。我在下面有此代码,但每次都会在接近相同的数字上生成〜.456

void RandomNumber()
{
srand(time(0));
double number=(double)rand()/((double)RAND_MAX+1);
cout<<"RANDOM NUMBER: "<<number<<endl;
}
  1. 不要使用rand,这是一个差的随机数生成器

  2. 每次调用发电机时不要重置种子

  3. 使用C 11。更清晰,可移植和易于维护

    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_real_distribution<> dis(0, 1);//uniform distribution between 0 and 1
    for (int n = 0; n < 10; ++n) {
        std::cout << dis(gen) << ' ';
    }
    

您每次生成随机数时重置随机发电机的种子,这意味着,如果您尝试在短时间内重复生成数字,您可能会得到相同的结果由于std::time()仅准确到一秒钟。

您应该在程序开始期间一次致电std::srand(),或者更好的是使用std::uniform_real_distribution。如果您对<random>库的工作方式感到困惑,请查看此信息。