写了一个范围内生成随机数的函数,范围7以内的时候每次返回值都是3
int randomIn(int lower, int upper) {
int n;
srand(time(NULL));
n = rand()%7;
return n;
}
因为只有在7的时候有问题 所以就直接改成了%7
求教这是怎么一回事
写了一个范围内生成随机数的函数,范围7以内的时候每次返回值都是3
int randomIn(int lower, int upper) {
int n;
srand(time(NULL));
n = rand()%7;
return n;
}
因为只有在7的时候有问题 所以就直接改成了%7
求教这是怎么一回事
将 srand(time(NULL));这行注释掉就可以了,原因:time(NULL)返回值没有改变,导致srand(unsigned int seed)种子不变,所以rand()产生的随机数就不变。
srand函数用来重置随机数序列,这个只使用一次就可以了,非必要情况下不重置,所谓的随机函数都是伪随机序列,你使用同一个随机种子,重置出来的同一个伪随机序列,然后每次取的都是序列的第一个数据,所以是不会变化的
不知道你是怎么回事?我这段C++代码运行是正常的(每次输出随机)。
是不是你的输出语句有问题。
#include <iostream>
#include <ctime>
#include <cstdlib>
int randomIn(int lower, int upper) {
int n;
srand(time(NULL));
n = rand()%7;
return n;
}
int main(){
std::cout << randomIn(0,0);
return 0;
}
把srand挪出去试试