首页 > 代码库 > rand()产生随机数 及其和clock()的不同
rand()产生随机数 及其和clock()的不同
rand()使用
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数。
定义函数 : int rand(void)
函数说明 :
因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。
返回值:
返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。
0~RAND_MAX每个数字被选中的机率是相同的。
示例如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include<stdio.h> #include<stdlib.h> #include<time.h> //产生Range_Min-Range_Max之间的随机数,必须初始化种子,否则每次结果都一样 int main( void ) { time_t t; srand((unsigned) time(&t)); printf( "%d\n" , (unsigned) time(NULL)); printf( "%d\n" , (unsigned) time(&t)); int Range_Min = 1; int Range_Max = 10; for ( int i=0; i<20; i++) { printf( "%d\n" ,( int )(Range_Max*rand()/( double )RAND_MAX) + Range_Min); } return 0; } |
rand()和clock()的不同
clock计算的是进程实际使用的各种时间,time是wall time,即钟表时间,此时间内操作系统可能会调度多个进程执行。
函数名: clock
功 能: 确定处理器时间
用 法: clock_t clock(void);
程序例:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<stdio.h><br>#include<time.h> #include<windows.h> int main( void ) { clock_t start, end; start = clock(); // vc下,头文件是<windows.h>,S要大些,其它情况都要小写;linux下,头文件为unistd.h Sleep(2000*2); end = clock(); printf( "The time was: %d seconds\n" , (end - start)/CLOCKS_PER_SEC); return 0; } |
而time()是个时间的函数,time(NULL)就是去当前的时间
程序实例:
?
1 2 3 4 5 6 7 8 9 10 | #include<stdio.h> #include<time.h> int main( void ) { time_t t; t = time(NULL); printf( "The number of seconds since January 1, 1970 is %ld" ,t); return 0; } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。