This question already has answers here:
random or rand function prints the same value, even in different machines
                                
                                    (3个答案)
                                
                        
                                3年前关闭。
            
                    
#include <stdio.h>
#include <stdlib.h>
int main()
{




    int a = rand()%  36;
    int b = rand() % 36;
    int c = rand() % 36;
    int d = rand() % 36;

    printf("1 = %d\n" , a);
    printf("2 = %d\n" , b);
    printf("3 = %d\n" , c);
    printf("4 = %d\n" , d);




    return 0;
}


我正在尝试编写一个可以显示从1到36的随机数的c程序。上面的程序仅显示一次从1到36的随机数。当我第二次运行程序时,随机数保持不变。每次运行该程序时,缺少一些随机数字吗?

最佳答案

您需要使用srand()为随机数生成器添加种子。否则,假定1为种子。

srand()手册页:


  如果未提供种子值,则rand()函数将自动
  种子的值为1。


这意味着每次运行程序时,都会使用相同的种子(1),并且您将始终获得相同的数字序列。

通常,srand((unsigned int)time(NULL));用于播种。但是如果您足够快地运行程序(即time(NULL)返回相同的值),那么即使这样做,您也可能会得到相同的数字序列。

关于c - C中带有rand的随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41784131/

10-16 15:00