[March , 3, 2008] Watcom C 的笔记8 Watcom C (8)

           随机函数

    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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注