我有以下方法生成一个随机数:
int random_number() //Random number generator { int x = rand() % 1000000 + 1; //Generate an integer between 1 and 1000000 return x; }
对该方法的调用用于循环五次.该方法的问题是,在运行程序多次时,似乎总是生成相同的数字.这怎么可以解决?@H_404_5@
解决方法
您需要
seed的随机数生成器,如:
srand ( time(NULL) ); int x = rand() % 1000000 + 1;
种子伪随机数生成器基本上决定了它将遍历的随机数集.使用时间是实现充分随机结果的标准方法.@H_404_5@
编辑:@H_404_5@
为了澄清,你应该只种一次,并获得许多随机数字,像这样:@H_404_5@
srand ( time(NULL) ); loop { int x = rand() % 1000000 + 1; }
而不是像:@H_404_5@
loop { //Particularly bad if this line is hit multiple times in one second srand ( time(NULL) ); int x = rand() % 1000000 + 1; }