该代码应该生成1到10之间的随机数,但是每次都会返回1。
int random_integer;
int lowest=1, highest=10;
int range=(highest-lowest)+1;
random_integer = lowest + int(range*rand()/(RAND_MAX + 1.0));
cout << random_integer << endl;
Run Code Online (Sandbox Code Playgroud)
代码有什么问题?
如果你想要一个lowest和之间的随机整数highest,你最好写
random_integer = lowest + rand() % range
Run Code Online (Sandbox Code Playgroud)
range * rand() / (RAND_MAX + 1.0)
Run Code Online (Sandbox Code Playgroud)
不按照你的想法做。介绍一些原谅:
range * (rand() / (RAND_MAX + 1.0))
Run Code Online (Sandbox Code Playgroud)
(但是请注意,此方法会产生偏斜的分布。)