C语言中srand(), rand(), time()函数.doc_第1页
C语言中srand(), rand(), time()函数.doc_第2页
C语言中srand(), rand(), time()函数.doc_第3页
C语言中srand(), rand(), time()函数.doc_第4页
C语言中srand(), rand(), time()函数.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言中srand(), rand(), time()函数srand函数srand函数是随机数发生器的初始化函数。 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的rand() 函数会出现一样的随机数。如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数(即从1970年1月1日的00:00:00到当前你所处的时间所经过的秒数),然后将time_t型数据转化为(unsigned)型再传给srand函数,即: srand(unsigned) time(&t); 还有一个经常用法,不需要定义time_t型t变量,即: srand(unsigned)time(NULL); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。srand(int)getpid(); 使用程序的ID(getpid()来作为初始化种子,在同一个程序中这个种子是固定的。例1(C语言)随机输出十个0-100之间的整数 程序例1: #include /*用到了srand函数,所以要有这个头文件*/#include #include /*用到了time函数,所以要有这个头文件*/#define MAX 10int main( void) int numberMAX = 0; int i; unsigned int seed; scanf(%d,&seed);/*手动输入种子*/ srand(seed); for(i = 0; i MAX; i+) numberi = rand() % 100; /*产生100以内的随机整数*/ printf(%d , numberi); printf(n); return 0;例2(C语言)程序例2: #include #include #include /*用到了time函数,所以要有这个头文件*/#define MAX 10int main( void) int numberMAX = 0; int i; srand(unsigned) time(NULL); /*播种子*/ for(i = 0; i MAX; i+) numberi = rand() % 100; /*产生100以内的随机整数*/ printf(%d , numberi); printf(n); return 0;例3(C+)#include #include #include using namespace std; int main() double random(double,double); srand(unsigned(time(0); for (int icnt = 0; icnt != 10; +icnt) cout No. icnt+1 : int(random(0,10) endl; return 0; double random(double start, double end) return start+(end-start)*rand()/(RAND_MAX+ 1.0);在VC+6.0中输出的结果是:= No.1: 6No.2: 3No.3: 8No.4: 7No.5: 0No.6: 8No.7: 4No.8: 8No.9: 7No.10: 9=rand函数简介功 能::伪随机数发生器 所属库:stdlib.h 用 法: 需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每行代码都可以产生不同的随机数。 函数原型:int rand(void); 相关函数:srand、time、GetTickCount程序例程序1: #include stdio.h#include stdlib.hint main(void) int i; printf(Ten random numbers from 0 to 99nn); for(i=0; i10; i+) printf(%dn, rand() % 100); return 0;例1程序在每次运行时都会生成相同的十个伪随机数,如要每次生成的随机数不同应结合srand函数和time函数。如下: 程序例2: #include stdio.h#include stdlib.h#include time.hint main(void) int i; srand(unsigned int)time(NULL); printf(Ten random numbers from 0 to 99nn); for(i=0; i= 0;time函数函数名:time 头文件:time.h 函数原型:time_t time(time_t * timer) 功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。 补充说明:time函数的原型也可以理解为 long time(long *tloc),即返回一个long型整数。因为在time.h这个头文件中time_t实际上就是: #ifndef _TIME_T_DEFINED typedef long time_t; /* time value */ #define _TIME_T_DEFINED /* avoid multiple defines of time_t */ #endif 即long。函数应用举例time函数获得日历时间。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。程序例1: #include #include #include int main(void) time_t t; t = time(NULL); printf(The number of seconds since January 1, 1970 is %ld,t); return 0; 程序例2: /time函数也常用于随机数的生成,用日历时间作为种子。 #include #include #includeint main(void) int i; srand(unsigned)time(NULL); printf(ten random numbers from 0 to 99nn); for (i=0; i10; i+) printf(%dn, rand()%100); return 0;程序例3: 用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。 #include #include #include int main(void) time_t timer; / time_t就是long int 类型 struct tm *tblock; timer = time(NULL); / 这一句也可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论