【发布时间】:2014-11-17 21:28:12
【问题描述】:
嘿,我正在尝试在 C 中的最小值和最大值之间生成一个随机值,其中函数的第一个参数表示最大值,最小值是前一次调用的前一个最大值。该函数有效,但由于某种原因,生成的值似乎总是以相同的数字结尾。
void myRand(int max, int* randValue)
{
static int newMin = 0;
srand(time(NULL));
*randValue = (newMin)+rand()%((max-newMin)+1); /* produces random value between previous max value and new max value in parameter 1 */
newMin = max;
}
int main(void)
{
int a, b;
myRand(10, &a);
printf("%d\n", a);
myRand(20, &b);
printf("%d\n", b);
myRand(30, &b);
printf("%d\n", b);
return 0;
}
在函数的第一次调用中,最小值为 0。
【问题讨论】:
-
只需一次致电
srand(time(NULL));。 -
是的,问题已解决,谢谢
标签: c