#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;
}我正在尝试写一个c程序,它可以显示从1到36的随机数。上面的程序只显示一次从1到36的随机数。当我第二次运行程序时,随机数保持不变。是不是每次运行程序的时候都会丢失一些随机的东西呢?
发布于 2017-01-22 04:33:42
您需要使用srand()作为随机数生成器的种子。否则,假设1是种子。
srand()手册页:
如果未提供种子值,则rand()函数将自动作为种子值1。
这意味着每次你运行你的程序时,都会使用相同的种子(1),这样你就会得到相同的数字序列。
通常,srand((unsigned int)time(NULL));用于种子设定。但是,如果您运行程序的速度足够快(即,如果time(NULL)返回相同的值),那么即使这样,您也可能得到相同的数字序列。
发布于 2017-01-22 04:33:32
您需要的是srand和time
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
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;
}发布于 2017-01-22 04:33:38
在main插队之后
srand(time(NULL));初始化随机数生成器。
您还需要为time添加#include
https://stackoverflow.com/questions/41784131
复制相似问题