C程序随机值

C程序随机值,c,C,嘿,我试图在C中的最小值和最大值之间生成一个随机值,其中函数的第一个参数表示最大值,最小值是前一次调用的前一个最大值。该函数可以工作,但由于某些原因,生成的值似乎总是以相同的数字结尾 void myRand(int max, int* randValue) { static int newMin = 0; srand(time(NULL)); *randValue = (newMin)+rand()%((max-newMin)+1); /* produces rand

嘿,我试图在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。

只需调用srandtimeNULL一次。因此,在main的开头移动srand。

调用srandtimeNULL;就一次。是的,解决了问题,谢谢