#include <stdio.h> #include <time.h> #include <stdlib.h> main() { int i; randomize(); /*这样就行了*/ i=random(35); printf("%d",i); getch(); } |
--------------------------------------------------------------------------/
程序的关键就是伪随机数的(pseudo-random number)(因为计算机对随机的结果有可能重复,所以叫伪随机数)产生。仅仅rand()函数是不能确保随机的结果序列不同(这点可以从printf("%d",rand());打印看结果,每次都一样),还需要所谓的种子(seed)产生器函数void srand(unsigned int seed);使用参数做种子来使rand()函数的结果序列不同。参数最好每次都能变化,那么运行rand()函数的使用,由于srand函数的种子参数不同,rand()函数随机的结果就不同了。<time.h>里面time函数返回的就是自1970/01/01日开始的时间(用滴答数来表示:ticks)...原型是time_t time(time_t *timer);别被time_t吓倒。time.h里有typedef long time_t原来time_t也就是个long int.而time_t *指针也就是long *.而指针不就是存放地址的嘛。比如cpu32根地址线那么有32位。表示成16进制也就是8个16进制位。比如0X315A45B3.把指针就看普通的整形内存单元放整形数一样。没什么大不了。另外time函数的参数是把它指向的单元用来存放流逝的时间(自从1970/01/01开始).如果是NULL。那么表示不用存放。但返回值还是可以表示流逝的时间。显然每一秒过后,结果都不一样。拿来做种子是最合适的。 #include<stdlib.h> //rand and srand fuctions are included in stdlib.h |
评论