C语言随机数生成

在写代码的过程中,我们常常会生成随机数。例如三子棋中的电脑随机下棋,还有猜数字中的随机数等等。

那么我们应该如何来生成随机数呢?

在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:

int rand(void);     void表示不需要参数传递

下面看一个例子:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int n = rand();

printf("%d\n",n);

return 0;}

运行结果为:41。

但是多次运行上面的代码,我们会发现每一次运行的结果都为41,这是为什么呢?随机数怎么不随机了?

其实,这是因为rand()随机生成的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。种子和随机数之间的关系是一种正态分布,如下图所示:

 种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是定值了,所以根据公式推算出来的结果(也就是生成的随机数)就是固定的。

这里我们就要用到srand()函数来使这个种子发生变化,srand()函数的用法为:

void srand(unsigned int seed);      它的头文件为<stdlib.h>。

它需要一个 unsigned int 类型的参数。在实际开发中,我们可以用时间作为参数,只要每次参数的时间不同,那么生成的种子就不同,最终的随机数也就不同。

使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒),就像下面这样:

srand((unsigned)time(NULL));

那么,我们生成随机数代码就如下了:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main() {

int n=0;

srand((unsigned)time(NULL));

a = rand();

printf("%d\n", n);

return 0;

}

这样我们多次运行程序,每次产生的随机数都不一样了。

如何生成一定范围内的随机数:

int a = rand() % 10;    //产生0~9的随机数

int a = rand() % 19+23;    //产生23~41的随机数

 

  • 14
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值