C和C++产生随机数

C和C++产生随机数

ID:40743206

大小:20.19 KB

页数:8页

时间:2019-08-07

C和C++产生随机数_第1页
C和C++产生随机数_第2页
C和C++产生随机数_第3页
C和C++产生随机数_第4页
C和C++产生随机数_第5页
资源描述:

《C和C++产生随机数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C/C++怎样产生随机数:这里要用到的是rand()函数,srand()函数,C语言/C++里没有自带的random(intnumber)函数。(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值,范围在0至RAND_MAX间。RAND_MAX定义在stdlib.h,其值为2147483647。例如:#include#includevoidmain(){      for(inti=0;i<10;i+)           

2、 printf("%d/n",rand());}(2) 如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(intnumber)函数,然后在main()里面直接调用random()函数:例如:随机生成10个0~100的数:#include#include#definerandom(x)(rand()%x)voidmain(){    for(intx=0;x<10;x++)          printf("%d/n",random(100));} (3)但

3、是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed),如果未设随机数种子,rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1,进而导致rand()所产生的随机数值都一样。srand()函数定义:voidsrand(unsignedintse

4、ed);通常可以利用geypid()或time(0)的返回值来当做seed如果你用time(0)的话,要加入头文件#include例如:#include#include#include#definerandom(x)(rand()%x)voidmain(){    srand((int)time(0));    for(intx=0;x<10;x++)          printf("%d/n",random(100));}这样两次运行的结果就会

5、不一样了!! <二>标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX是stdlib.h中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:printf("Randomnumbersare:%i%i/n",rand(),rand());因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随即并不是正真意义上的随机。为了时程序在每次执行时都能生成一

6、个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。例程:文件名:rand_srand.c/*Thisprogramgeneratesandprintstenrandomintegersbetween1andRAND_MAX*/#include#includintmain(){       usigne

7、dintseed;       /*申明初始化器的种子,注意时usignedint型的*/       intk;       pringt("Enterapositiveintegerseedvalue:/n");       scanf("%u",&seed);       srand(seed);       printf("RandomNumbersare:/n");       for(k=1;k<=10;k++)       printf("%i",rand());       printf("/n");

8、       return0;}你会发现,当你提供的种子相同时,随机数序列也时相同的。而且当种子为1时,与不使用srand()函数时一样的,也就是说rand()函数默认情况下初始化种子值为1;在stdlib.h中这两个函数的原型是:intrand();voidsrand(unsignedint);扩充:       x=rand()%11;/*

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

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

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