我试图在不使用boost的情况下在C++中获得0到1之间的统一随机数.我不想依赖图书馆.
每当我启动程序时,我都会使用:srand(time(NULL));
然后我打印8个随机数.我用一个空白行分隔程序的不同运行:
Random number: 0.226063
Random number: 0.449186
Random number: 0.474514
Random number: 0.160779
Random number: 0.220868
Random number: 0.136685
Random number: 0.260120
Random number: 0.843334
Random number: 0.226181
Random number: 0.422253
Random number: 0.808594
Random number: 0.040531
Random number: 0.212377
Random number: 0.421073
Random number: 0.965790
Random number: 0.026305
Random number: 0.226306
Random number: 0.526858
Random number: 0.898279
Random number: 0.378934
Random number: 0.736653
Random number: 0.924420
Random number: 0.718503
Random number: 0.888140
Random number: 0.226463
Random number: …Run Code Online (Sandbox Code Playgroud) 在注意到rand()函数每次产生41的相同输出后,我使用srand(time(0))播种了生成器.这解决了重复输出的问题,但现在它给了我不断增加的数字.(IE 245,248,250,253,255,256).我可以理解,由于系统时间的影响,它正在增加,但这是正常的吗?
这是我的计划:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int number;
srand(time(0));
cout << rand() % 1000;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我反复运行这个而不是循环.多次试验的输出:285 295 305 311 325 334 344 354 355