c语言随机函数的使用

c语言随机函数的使用

ID:10674565

大小:32.00 KB

页数:7页

时间:2018-07-07

c语言随机函数的使用_第1页
c语言随机函数的使用_第2页
c语言随机函数的使用_第3页
c语言随机函数的使用_第4页
c语言随机函数的使用_第5页
资源描述:

《c语言随机函数的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在C语言函数库中包含了一个产生随机数的函数:intrand(void);在函数库中对这个函数的说明是:Therandfunctionreturnsapseudorandomintegerintherange0toRAND_MAX.Usethesrandfunctiontoseedthepseudorandom-numbergeneratorbeforecallingrand.而在C语言函数库中是这样定义RAND_MAX的:/*Maximumvaluereturnedby"rand"function*/#defineRAND_MAX0x7FFF所以,函数intrand(void);返回的

2、是一个界于0~32767(0x7FFF)之间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意义上的随机数,看下面的程序:#include"stdlib.h"#include"stdio.h"voidmain(void){/*Displayanumber.*/printf("%6d",rand());getchar();}程序运行的结果是:346多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。伪随机数是通过一个公式来运算出来的,所以,每次产生的伪随机数都一样。那么,如何才能产生真正意义上的随机数呢?这就有一

3、个随机种子的问题。在C语言标准函数库中,有这么一个函数:voidsrand(unsignedintseed);在《Thecprogramminglanguage》中对这个函数是这样描述的:srandusesseed(函数变量声明中的seed)astheseed(随机函数中种子的意思)foranewsequenceofpseudo-randomnumbers.Theinitialseedis1.所以,要产生真正意义上的随机数,那么就要求每次提供的种子不一样,一般情况下,都设置时间为随机函数的种子。看下面的一段程序:/*RAND.C:Thisprogramseedstherandom-nu

4、mbergenerator*withthetime,thendisplays10randomintegers.*/#include"stdlib.h"#include"stdio.h"#include"time.h"voidmain(void){inti;/*Seedtherandom-numbergeneratorwithcurrenttimesothatthenumberswillbedifferenteverytimewerun.将当前时间设置成随机函数的种子,所以每次产生的数都不一样*/srand((unsigned)time(NULL));/*Display10numbers

5、.*/for(i=0;i<10;i++)printf(“%6d”,rand());}Output6929802621987307342058766992203425051798810104每次运行这个程序,产生的随机数都不一样,这样就达到了随机数的要求了。注意,rand这个函数产生的随机数的范围是0~32767,如果要产生100以内的随机数怎么办呢?在标准C语言库中并没有定义产生给定范围的随机数的函数。其实,要产生给定范围的随机数,只要做一个取余(%)运算就可以了。下面是一个产生10以内随机数的函数:#include"stdlib.h"#include"stdio.h"#inclu

6、de"time.h"intrand2(void);voidmain(void){inti;/*Seedtherandom-numbergeneratorwithcurrenttimesothat·thenumberswillbedifferenteverytimewerun.*/srand((unsigned)time(NULL));/*Display10numbers:0~9*/for(i=0;i<10;i++)printf("%6d",rand2());getchar();}intrand2(void){returnrand()%10;}运行结果:2579013583在这个程序

7、中,我自己写了一个函数rand2(),来产生10以内的随机数,其实,打开标准库中的头文件Stdlib.h就会发现有这样的一条语句:#definerandom(num)(rand()%(num))上面的这行代码是为了方便产生给定范围的随机数的,思路也是采用取余的方法,所以上面的程序也可以改成:#include"stdlib.h"#include"stdio.h"#include"time.h"voidmain(void){inti;/*Seedt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。