c++ - 如何从 C++ 生成均匀分布在 0 和 1 之间的随机 double ?

标签 c++ random

如何从 C++ 生成一个随机的 double 值,均匀分布在 0 和 1 之间?

当然我可以想到一些答案,但我想知道标准做法是什么,有:

  • 良好的标准合规性
  • 良好的随机性
  • 速度不错

(对于我的应用来说,速度比随机性更重要)。

非常感谢!

PS:如果重要的话,我的目标平台是 Linux 和 Windows。

最佳答案

一个老式的解决方案,例如:

double X=((double)rand()/(double)RAND_MAX);

应该满足您的所有标准(便携、标准和快速)。 显然生成的随机数必须播种标准程序是这样的:

srand((unsigned)time(NULL));

关于c++ - 如何从 C++ 生成均匀分布在 0 和 1 之间的随机 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340729/

相关文章:

c++ - 启用 MSAA 时,会出现伪影并且边缘上的纹理查找失败

c++ - 创建子类复制构造函数时,我是否被迫使用/创建默认的 super 构造函数? [C++]

c++ - 引入派生类中使用基本成员函数的重载解析

python - Python 中的 Seed() 和随机数

r - 如何在不同大小的循环中复制特定的随机抽取?

ruby - 如何在 Ruby 中随机排序(打乱)数组?

c++ - 为什么我会收到此错误 : invalid operands of types ‘int’ and ‘<unresolved overloaded function type>’ to binary ‘operator<<’

c++ - 声明和初始化全局二维数组

algorithm - 为什么 Java 中的 Math.random() 返回 [0, 1) 中的 double 而不是其他间隔?

java - 随机选择字符串后如何从数组中删除字符串? java