我需要编写此代码,并创建了此函数。与它对代码的作用无关,我需要它在a
和(0
)之间生成一个随机数(i
),这是一个具有先前初始化值的整数。不知何故,尽管播种了,我总是得到相同的数字。
我尝试输入数字而不是i,并且每次执行时都给我一个不同的随机数,因此它可以正常工作。我还尝试过在函数中声明一个新的int
变量,并为其赋予i
的值,但仍然无法正常工作。
elementptr position_current(elementptr first, int i){
elementptr current = first;
int j = 1;
printf("%d\n", i);
srand(time(NULL));
int a = rand() % i;
printf("%d\n",a);
for(j=1;j<a;j++){
current = current->next;
}
return current;
}
我希望(a
)每次运行代码时都会获得不同的值,但是它总是获得相同的值(2)。
有人可以告诉我什么地方可能出问题吗?
答案 0 :(得分:2)
我猜想您在一秒钟内多次调用此函数。由于time
每秒仅更改一次,因此您一遍又一遍地重新播种相同的值。
请勿一遍又一遍地致电srand
。在您的main
函数中只调用一次,然后再也不会调用它,并且rand
将基于该种子一次生成连续的值。