我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:
int rand (void);
rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。

#include <stdio.h>
#include <stdlib.h>
int main(){int a = rand();printf("%d\n",a);return 0;
}

随机数的本质

多次运行上面的代码,你会发现每次产生的随机数都一样,这是怎么回事呢?为什么随机数并不随机呢?

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

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

重新播种

我们可以通过 srand() 函数来重新“播种”,这样种子就会发生改变。srand() 的用法为:
void srand (unsigned int seed);
它需要一个 unsigned int 类型的参数。在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同。

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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {int a;srand((unsigned)time(NULL));a = rand();printf("%d\n", a);return 0;
}

多次运行程序,会发现每次生成的随机数都不一样了。但是,这些随机数会有逐渐增大或者逐渐减小的趋势,这是因为我们以时间为种子,时间是逐渐增大的,结合上面的正态分布图,很容易推断出随机数也会逐渐增大或者减小。

生成一定范围内的随机数

int a = rand() % 10;    //产生0~9的随机数,注意10会被整除int a = rand() % 51 + 13;    //产生13~63的随机数

分析:取模即取余,rand()%51+13我们可以看成两部分:rand()%51是产生 0~50 的随机数,后面+13保证 a 最小只能是 13,最大就是 50+13=63。

C语言 10_随机数相关推荐

  1. c语言用随机数定义数组中,C语言 将发生的随机数存入数组,数据不能相同

    C语言 将产生的随机数存入数组,数据不能相同 1.定义一个一维数,数组大小为24. 2.产生0~23的随机数. 3.将产生的随机数存入i数组,要求数组中的每个数据不能相同. 4.补充说明,这个子程序要 ...

  2. c语言中有关随机数的程序,C语言中随机数相关问题

    用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand ...

  3. 0 1随机数C语言程序,C语言产生随机数的方法

    C语言产生随机数的方法 C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.那么C语言产生随机数的方法都有哪些呢?以下仅供参考! ...

  4. 【C语言】随机数函数rand和srand

    文章目录 一.随机数函数 1.rand().srand() 2.time() 二.案例实现 1.案例描述 2.代码实现 一.随机数函数 1.rand().srand() C语言产生随机数要用到的函数是 ...

  5. 编程c语言随机函数,C语言产生随机数需要了解的几个函数

    C语言产生随机数是一个常见的编程功能任务,当然这个也不难,调用两三个函数就出来了,但是你知道这些函数具体是起到怎样的作用,并且是它们是如何产生随机数的吗? 几个概念 随机数:数学上产生的都是伪随机数, ...

  6. 用c语言产生随机数的方法

    用c语言产生随机数的方法 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以random函数不能在gcc,vc等编译器下编译通过,那么我们如何实现呢? ra ...

  7. c语言产生随机数停滞,C语言产生随机数,个人理解

    关于C语言产生随机数的文章网上很多 其实只需要下边三个函数即可 srand(); time( ); rand(); 需要添加头文件 #include #include 但是我自己尝试了一下,每次产生的 ...

  8. C语言产生随机数并写入文件中

    在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 和srand()函数来生成随机数,如果要保证每次产生的随机数不重复,需要在每次产生随机序列前,先指定不同的种子,这 ...

  9. 随机数c 语言代码,C 语言产生随机数的方法

    C 语言产生随机数的方法 随机数的使用,是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题,下面小编给大家介绍C 语言产生随机数的方法,欢迎阅读! C 语言产生随机数的方法 在 C 语言中, ...

最新文章

  1. OMG!我居然把新首页设计出来了!
  2. 2020 年入门数据分析选择 Python 还是 SQL?七个常用操作对比!
  3. 第十六届智能车竞赛赛前补充比赛信息
  4. 联想m7400pro更换墨粉盒怎么清零_打印耗材到底怎么选
  5. python中文叫什么意思-在python中,“~”是什么意思?
  6. php记录网站访问,PHP简单实现记录网站访问量的功能
  7. FIR仿真module_04
  8. 【渝粤题库】陕西师范大学210019 学前教育科研方法 作业(专升本)
  9. 最详尽使用指南:超快上手Jupyter Notebook
  10. 物联网os_用于物联网的FireFox OS,NextCloud公告以及更多新闻
  11. 60-420-020-使用-存储过程-使用存储过程和函数插入大数据量
  12. 彩虹屁支持java吗_IDEA版本彩虹屁插件idea-rainbow-fart,一个在你编程时疯狂称赞你的 IDEA扩展插件...
  13. (47)LINUX应用编程和网络编程之二Linux文件属性
  14. 在资源管理器中增加二级菜单
  15. html页面保存到本地文件路径,js上传文件到指定路径 jQuery或者js保存文件到本地...
  16. Scintilla教程(1): 入门介绍
  17. mysql 索引必须唯一_唯一索引和普通索引的区别是什么,什么时候需要建唯一
  18. 16进制是否能整除 求余的运算
  19. 第三阶段应用层——1.5 数码相册—使用FreeType在LCD上显示单个字符
  20. 老王卖西瓜python_python 老王装货

热门文章

  1. java过滤xss_java处理XSS过滤的方法
  2. 彻底解决高版本 mac Kernel_task占CPU问题
  3. Linux内核在线源码
  4. Spring Batch 配置重试逻辑
  5. 停车还能360全方位影像_360°全景倒车影像、自适应巡航买的时候觉得没用,现在发现错了...
  6. 2017算法实习生应聘经验总结
  7. 总线 —— 总线标准
  8. 2 pygraphviz在windows10 64位下的安装问题(反斜杠的血案)
  9. uber_来自我的Uber司机的责任制课程
  10. 计算机视觉-图像的SIFT特征(尺度空间)