在c中的函数中使用rand()

时间:2017-11-16 18:03:55

标签: c random

我创建了一个函数,它创建一个0到9之间的随机数,但是当我在一个for循环中调用main函数时,索引i = 0;我< n; i ++它打印1个随机数n种类型。但我想要打印n次不同的值。 这是我做的代码: -

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    void random_variable() {
     int i;
     srand(time(NULL));
     i = rand()%10;
     printf("%d ",i);
    }
    main() {
     for(int j=0;j<10;j++) {
      random_variable();
     }
    }

输出是这样的: -

请点击链接查看输出: - here instead of 8 ten times i needed 10 different values

2 个答案:

答案 0 :(得分:5)

srand()初始化标准C库的PRNG(伪随机数生成器)。 PRNG的工作原理是对内部存储的值应用或多或少复杂的算术运算,并将结果的一部分作为下一个&#34; random&#34;数。 srand()设置此内部状态。

如果您每次在函数中调用srand(),您都不会获得(明智的)随机数,因为每次都会重置内部状态。程序启动后调用它。

答案 1 :(得分:1)

srand()种子随机数。你想这样做一次,而不是每次都这样做。

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    void random_variable() {
       int i;
       i = rand()%10;
       printf("%d ",i);
    }
    main() {
       srand(time(NULL));
       for(int j=0;j<10;j++) {
          random_variable();
       }
    }