首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C语言中的随机数和随机数

C语言中的随机数和随机数
EN

Stack Overflow用户
提问于 2017-01-22 04:30:02
回答 5查看 6K关注 0票数 0
代码语言:javascript
复制
#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的随机数。当我第二次运行程序时,随机数保持不变。是不是每次运行程序的时候都会丢失一些随机的东西呢?

EN

回答 5

Stack Overflow用户

发布于 2017-01-22 04:33:42

您需要使用srand()作为随机数生成器的种子。否则,假设1是种子。

srand()手册页:

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

这意味着每次你运行你的程序时,都会使用相同的种子(1),这样你就会得到相同的数字序列。

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

票数 1
EN

Stack Overflow用户

发布于 2017-01-22 04:33:32

您需要的是srandtime

代码语言:javascript
复制
#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;
}
票数 0
EN

Stack Overflow用户

发布于 2017-01-22 04:33:38

main插队之后

代码语言:javascript
复制
srand(time(NULL));

初始化随机数生成器。

您还需要为time添加#include

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41784131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档