rand函数看似简单,使用时有几个需要注意的地方。
rand原型:
#include <cstdlib> int rand(void);
生成数值的范围为[0, RAND_MAX]
调用rand之前先用srand设定随机数生成种子:
#include <ctime> srand(time(NULL));
若要生成[0, m)范围内的数,不要简单的采用rand()%m,因为这样得到的随机数的随机性会大大降低。用下面方法:
//return a random number in range [0, high] int random_number(int high) { // scale in range [0, 1) const float scale = rand() / float(RAND_MAX) ; return int( scale*high + 0.5 ); // int(5.5)=5, int(5.9)=5 }
参考资料:C++ Reference(http://www.cppreference.com/)