随机函数 stdlib.h 中的 int rand(void) 产生随机数。需要注意的是,生成的 范围是 0-32767。 直接使用这个参数生成的是伪随机数。 #include <stdio.h> #include <stdlib.h> int main() { int i; for (i=0;i<0x200;i++) { if ((i % 0x10)==0) {printf("\n");} printf("%5d ",rand()); } return 0; } 上面这个程序将生成256个随机数,因为产生的是伪随机数,因此,两次 运行产生的结果是相同的。 使用 void srand( unsigned int seed ) 会指定随即种子,但是对于 相同的随机种子,产生的序列还是一样的 ... ... 看来生成随机数真的有必要 使用时钟生成种子。 clock_t clock(void) 是同 rdstc 类似的函数, #include <stdio.h> #include <math.h> #include <time.h> #include <limits.h> void compute( void ) { int i, j; double x; x = 0.0; for( i = 1; i <= 10000; i++ ) for( j = 1; j <= 10000; j++ ) x= sqrt( (double) i * j ); printf( "%16.7f\n", x ); } void main() { clock_t starttime,endtime; starttime=clock(); //开始计时 compute(); endtime=clock(); //停止计时 printf( "Execution time was %lu \n",(endtime-starttime)/CLOCKS_PER_SEC); //显示经过了多少秒 } 使用time函数获取当前时间,结果是32位的unsigned long,想必可以 用来做随机种子。 #include <stdio.h> #include <time.h> void main() { time_t time_of_day; time_of_day = time (NULL); printf( "%lu \n",time_of_day); } Z.t 2008-1-22