一、关于rand():
首先我们须了解:
①rand()函数包含在<stdlib.h>中。
②rand()函数定义:int rand(void);
②rand()函数产生的随机数范围为0-0x7fff,即0-32767。(事实上根据编译器的不同范围也会不同,但都为0~RAND_MAX )

了解以上之后,我们试着产生10个伪随机数。

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

运行结果后我们发现确实产生了10个伪随机数,但是多次运行后又发现,这10个数字始终不变。为了进一步确保随机性,我们使用随机种子。

二、关于srand():
首先我们须了解:
①srand()函数包含在<stdlib.h>中。
②srand()函数定义 : void srand (unsigned int seed);
③在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。

了解以上之后我们才终于发现为什么上面出现的情况:上面的例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。
于是我们改进了代码。

#include <stdio.h>
#include <stdlib.h>int main()
{unsigned int seed;//seed是无符号整型printf("Please enter the seed");scanf("%u",&seed);//注意以%u读取srand(seed);for (int i=0;i<10;i++){printf("%d\n",rand());}return 0;
}

多次运行后发现,我们输入的seed不同,产生的随机数也不同。但是我们又有了新的困惑:能不能不需要用户每次都输入seed,自己产生seed生成随机数可以吗?

三、关于time()
首先我们须了解:
①time()函数包含于<time.h>中。
②time()函数定义:time_t time(time_t *seconds);
③该函数返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。
④time()函数有两种使用方式: t1=time(NULL)或t1=time(0)

了解以上后,我们何不将time(0)返回的值作为seed呢?这样即能实现每次的seed都是随机的,又不用人为输入。

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

多次运行后发现,每次产生的10个随机数确实不尽相同。

C语言-关于rand()函数的使用相关推荐

  1. c语言随机数rand函数一探究竟

    c语言随机数rand函数一探究竟 真正的随机数? 测试srand对rand的影响. 这是真的吗? 结论 rand函数是C语言用来产生随机数的函数,一般搭配srand函数使用.使用方法如下: #incl ...

  2. C语言实现RAND函数的方法

    C语言使用rand()%一个值就可以实现生成一个伪随机数供我们使用,那么rand函数是如何实现的呢?我们自己可不可以编辑出来?其实是可以的,rand作为伪随机数发生器产生的是一个伪随机数,一般的用途能 ...

  3. c语言rand再哪个头文件里,c语言下rand函数在哪个头文件中

    满意答案 kongxiang09 2012.11.20 采纳率:47%    等级:13 已帮助:7313人 1.只能产生伪随机数,最多也只是提高模拟的程度而已,rand函数内部管理着一个计数单位,程 ...

  4. 【C语言】rand()函数(如何生成指定范围随机数)

    一.rand()函数简介 我们先来看一下cplusplus.com - The C++ Resources Network网站上rand函数的基本信息: 系统生成随机数时需要使用rand函数(rand ...

  5. rand在c语言那一个函数库,浅析C语言中的rand函数和srand函数(一)

    我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的rand函数 ...

  6. c语言rand函数的作用,详解C语言中rand函数的使用

    前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...

  7. C语言rand()函数解析

    C语言的rand()函数位于<stdlib.h>.该函数可以生成一个取值为0-32767的伪随机数.先看一下函数的实现. unsigned long int next = 1;int ra ...

  8. C语言中连续调用rand函数,返回值不变

    C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...

  9. C语言(rand函数)

    C语言(rand函数) (2006-09-24 20:41:59) 转载     srand()就是给rand()提供种子seed 1,先看一个例子 #include <iostream> ...

最新文章

  1. 骆驼命名法,帕斯卡命名法和匈牙利命名法(转)
  2. LA3415保守的老师
  3. 编程之美-2.14-求数组的子数组之和的最大值
  4. 基于VUE只是作为模版引擎的前后端分离
  5. IOS UIColor 自定义颜色
  6. 计算机二级数据库系统知识点,2020年全国计算机二级Access复习知识点:分布式数据库系统...
  7. strcat第二个参数变吗_您能解决这3个(看似)简单的Python问题吗?
  8. QString字符串中双引号的梗
  9. 群晖7.1添加NVME固态硬盘
  10. 打印机加粉通用模版:打开打印机、取出硒鼓,然后加粉
  11. Adobe Premiere基础-编辑素材文件常规操作(脱机文件,替换素材,素材标签和编组,素材启用,便捷调节不透明度,项目打包)(十七)
  12. CentOS7常用操作-笔记
  13. Layui 表格分页控件
  14. 跨考计算机日程记录01
  15. 选择尚学堂与传智播客的java培训?
  16. C语言数组中,数组名在中括号中(即 [array])是什么意思?
  17. 中秋节灯谜趣事:古人中秋节…
  18. 港科夜闻|香港科大张明杰教授课题组报道相分离介导突触前膜活性区的组织方式...
  19. 温度传感器c语言编写,温度传感器代码解析Ⅰ
  20. 近期前端特效资源精品大荟萃#001

热门文章

  1. java mysql多次事务 模拟依据汇率转账,并存储转账信息 分层完成 dao层 service 层 client层 连接池使用C3p0 写入库使用DBUtils...
  2. 2021短视频直播斜杠职场人图鉴——附下载链接
  3. 端到端训练 联合训练_图分解的端到端学习
  4. 巴萨罗那:Deco来,Davis走!
  5. 解决vue中textarea不换行
  6. html中省略号的设置
  7. Java中数组的赋值拷贝
  8. Web应用隐形后门的设计与实现
  9. java毕业设计学生宿舍管理系统Mybatis+系统+数据库+调试部署
  10. 记一次「失败」的 Redis 面试