从C++中的[0,1]中获取随机双数

nul*_*ter 3 c++ random

我想生成随机双数x,其中0 <= x <= 1::

double x = ((double) rand() / (RAND_MAX));
Run Code Online (Sandbox Code Playgroud)

这是从[0,1]获取随机双数的正确方法吗?

Zet*_*eta 5

是的,因为std::rand()返回0RAND_MAX.但是,如果您可以使用C++ 11,则可以使用std::uniform_real_distribution.

另外不要忘记初始化随机数生成器,否则每次执行都会得到相同的序列.如果使用std::rand,std::srand( std::time(0) )几乎总是足够的.