使用C ++的1到10之间的随机数

raj*_*jat 0 c++ random

该代码应该生成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)

代码有什么问题?

Ant*_*nov 7

如果你想要一个lowest和之间的随机整数highest,你最好写

random_integer = lowest + rand() % range
Run Code Online (Sandbox Code Playgroud)


Luc*_*ore 5

您可能会在这里-溢出range*rand()

只需使用普通人使用的:rand() % 10 + 1


Fre*_*Foo 5

range * rand() / (RAND_MAX + 1.0)
Run Code Online (Sandbox Code Playgroud)

不按照你的想法做。介绍一些原谅:

range * (rand() / (RAND_MAX + 1.0))
Run Code Online (Sandbox Code Playgroud)

(但是请注意,此方法会产生偏斜的分布。)