c++ - 生成[0,1)之间的随机数c++

标签 c++ random

<分区>

我正在尝试生成一个在 [0,1) 之间均匀分布的随机数,我已经尝试过 uniform_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) << ' ';
    }
    

关于c++ - 生成[0,1)之间的随机数c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716109/

相关文章:

c++ - 使用 BOOST.Test 测试函数

c++ - 使用 operator[] 插入时不同的 std::map 大小(vc++ vs g++)

java - 如何用数字和章程组合的 5 位数字创建随机数

c++ - 如何生成一个总和为 0.0 的 n 大小的随机 float 组?

c++ - 通过连接另一个 char* 来初始化 const char*

c++ - IMFActivate::ActivateObject 返回错误代码 "CoInitialize has not been called."

c++ - 如何检测Windows 2012 Core 版(C++)

C - 矩阵,随机数

python - 为什么 random() * random() 与 random() ** 2 不同?

c - 如何从用户输入的一堆单词中随机选择一个字母