【问题标题】:C Program random value [duplicate]C程序随机值[重复]
【发布时间】: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


【解决方案1】:

您只需致电srand(time(NULL)) 一次。所以将srand移动到main的开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-30
    • 2016-04-25
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2017-05-20
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多