我们知道rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是 根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正 的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。

为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列。

srand(seed); 
然后调用rand()就可以了,相同的seed产生的随机数排列是相同的 
比如 
srand(20); 
假设调用rand()后产生随机数4,6,7,8,然后退出程序,下一次运行时产生的还是4,6,7,8 
要想每次运行产生不同的随机数就用srand(TIME(NULL)); 
记得srand()用头文件stdlib.h,TIME(NULL)用time.h

那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧。利用srand((unsign)(time(NULL))是一 种方法,因为每一次运行程序的时间是不同的,对了,你知道time() 函数的功能是返回从1970/01/01到现在的秒数的吧,可能这个起始时间不正确,你查一下对不对吧,C还提供了另一个更方便的函数,

randomize()原形是void randomize(),功能是用来始初rand() 的种子的初始值,而且该值是不确定的,它相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h罢了

srand(设置随机数种子) 
相关函数 
rand

表头文件 
#include<stdlib.h>

定义函数 
void srand (unsigned int seed);

函数说明 
srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

返回值

范例 
/* 产生介于1 到10 间的随机数值,此范例与执行结果可与rand()参照*/ 
#include<time.h> 
#include<stdlib.h> 
main() 

int i,j; 
srand((int)time(0)); 
for(i=0;i<10;i++) 

j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); 
printf(" %d ",j); 

}

执行 
5 8 8 8 10 2 10 8 9 9 
2 9 7 4 10 3 2 10 8 7

rand(产生随机数) 
相关函数 
srand

表头文件 
#include<stdlib.h>

定义函数 
int rand(void)

函数说明 
rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。

返回值 
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。

范例 
/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考 
srand()*/ 
#include<stdlib.h> 
main() 

int i,j; 
for(i=0;i<10;i++) 

j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); 
printf("%d ",j); 

}

执行 
9 4 8 8 10 2 4 8 3 6 
9 4 8 8 10 2 4 8 3 6

1、rand返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)

2、C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。 
3、 比较理想的是用变化的数,比如时间来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。

随机函数的rand、srand用法相关推荐

  1. C++ rand,srand用法

    FROM http://blog.csdn.net/hgl868/article/details/7057843 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初 ...

  2. 784-C语言rand和srand用法详解

    C语言rand和srand用法详解 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头 ...

  3. getrand在c语言中的作用,c语言 rand 的用法

    C语言是一门通用计算机编程语言,应用广泛.下面,学习啦小编为大家整理了c语言 rand 的用法,希望对你有帮助哦! 一.步骤: 写入头文件 #include #include #include 变量的 ...

  4. rand()函数用法

    rand函数用法 1.rand是伪随机数,只会第一次随机.若不加参数,则范围为0到最大值32727(左闭右开). 2.若要让rand在一定区间内随机生成 rand()%(b-a+1)+a 表示范围a到 ...

  5. rand函数用法整理

    rand函数用法整理 一.普通用法 1.1 生成随机数 rand()函数不需要参数,它将会返回0到RAND_MAX之间的任意的整数.如果我们想要生成一个在区间[0, 1]之内的数,那么我们可以写出如下 ...

  6. 在C语言中rand的用法,c语言中rand的用法

    c语言中rand的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中rand的用法的用法,希望对你们有用. c语言中rand的用法的用法如下: rand(产生随机数) 相关函数 srand 表头文 ...

  7. C 标准库—— stdlib.h(包括 rand srand 的实现)

    C 标准库-- string.h C 标准库 -- time.h C 标准库 -- limits.h C 标准库 -- stdio.h C 标准库-- stdlib.h(包括 rand srand 的 ...

  8. 【C语言】C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随 ...

  9. 第十章 结构体_C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随 ...

最新文章

  1. 未解决:错误的结果 2 (从“D:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe”返回)。...
  2. AI:2020年6月21日北京智源大会演讲分享之14:50-15:15穗志方教授《从语言到知识——构建语言智能的基石》
  3. DL之DNN优化技术:GD、SGD、Momentum、NAG、Ada系列、RMSProp各种代码实现之详细攻略
  4. python之路——网络编程
  5. 23模式之: 工厂方法模式demo
  6. 三次技术转型,程序员的北漂奋斗史
  7. 安川变频器跳os_变频器常见故障代码及处理实例(经典,建议收藏)
  8. 十八.搭建Nginx服务器、配置网页认证、基于域名的虚拟主机、ssl虚拟主机
  9. Python XML解析(转载)
  10. linux缺页异常处理--内核空间
  11. 新版IAR软件打开旧版本创建的项目时出现的三个错误及其解决方案 is too long for segment definition
  12. JAVA核酸预约检测管理系统毕业设计 开题报告
  13. 计算机控制d a数模转换实验,实验一 D、A数模转换实验
  14. 星巴克推出Web3平台;天啦噜,AI绘画能007了;『决策算法』电子书;合成人脸数据集;面向数据的版本控制;前沿论文 | ShowMeAI资讯日报
  15. 物联网芯片的协议之WLAN及其调制
  16. python 实现简单画板_python 画板示例源码(可做签名/涂鸦)
  17. 3D游戏设计读书笔记二
  18. 虚拟机屏幕显示不全(界面大小更改 )虚拟机Ubuntu18.04 的超详细环境搭建教程/步骤 SDN软件定义网络实验
  19. 提效篇 |当项目紧急入场,如何先测量后校正?
  20. 益聚星荣:阿里巴巴的“电商帝国”正走向衰落

热门文章

  1. Spring cloud 微服架构(一)
  2. 数据结构与算法——19. 散列函数设计方法
  3. 软件测试技术之iOS 单元测试—逻辑测试
  4. html 表格自动编号,excel表格批量自动编号
  5. 【论文阅读】Structured Pruning Learns Compact and Accurate Models
  6. 对SingleTask和TaskAffinity的理解
  7. yii2框架_选择Yii 2框架的7个理由
  8. PostgreSQL HOT技术内幕解读
  9. Metaq原理与应用
  10. 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解