rand()、srand()函数简析

参考文献:百度百科

宏定义:(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。(百度百科)  

一、rand()函数:

①rand函数并不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果在第一次使用rand()函数之前没有调用srand(),则系统自动生成srand().

②rand()会返回一个范围在0至PAND_MAX(32767)之间的伪随机数(整数)。当调用rand()函数之前,可以使用srand()函数设置随机数种子。srand((unsigned)time(NULL))则使用系统计数器/定时器的值作为种子。每个种子对应一组根据算法预先生成的随机数,因此在相同平台下,不同时间生成的随机数是不同的。若是改成:srand(TP)(TP为任意常数),则何时运行的结果都是一组固定序列,因此srand()生成的是伪随机数。

1.头文件:#include<stdlib.h>

2.函数原型:int rand(void);

3.语法:

①   库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:

函数一:int rand(void);
返回一个[0, RAND_MAX]间的随机整数。
函数二:void srand(unsigned seed);
参数seed是srand()的种子,用来初始化srand()的起始值。

②   系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed   指定了一个值,那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的

4.应用举例:

 ① 如果要产生[0,n)的一个随机整数,可以表达为:int a=rand()%n;

 ② 如果要产生[m,m+n)之间的一个随机整数,则表示为: int a=rand()%n+m;

 ③ 如果要产生[m,n]之间的一个随机整数,则表示为 : int a=rand()%(n-m+1)+m;


发布了7 篇原创文章 · 获赞 6 · 访问量 6248

猜你喜欢

转载自blog.csdn.net/yuxing_miao/article/details/79997592