#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<time.h> #include<stdlib.h> //rand and srand fuctions are included in stdlib.hsrand((usigned int)NULL);rand();另外:int rand(void);返回的是0-RAND_MAX之间的值(RAND_MAX至少是32767,你可以printf打印出来试试,我的compiler打印出来是32767.).然后想随机比如0-24的数值,那该怎么办呢?0-24我们联想到了求余。比如任何一个数对25求余数。那么余数必然是比该数25小的,必然是0-24里面的一个。所以假设任何数叫 someNumber,那么someNumber%25(求余数)必然是0-24里面的一个数。哈哈。那么rand()函数反正也是随机的,把它看成这个someNumber,那么rand()%25必然是0-24里面的一个数(因为rand()函数至少可以随机出来数字(0-24)),哈哈,既然rand()是随机的,那么结果就是0-24的随机数了。好了。 如果要随机N-M的怎么办。办法就是写成0-x的形式那么:(N-M)=(0-(M-N))+N。娃哈哈。比如11-33,那么可以看成(0-22)+11.rand()%23+11.这就是11-33的随机数。

评论