随机函数使用方法

  • 格式:doc
  • 大小:23.00 KB
  • 文档页数:2

1.rand()与srand()
在C语言函数库中包含了一个产生随机数的函数:
int rand( );
返回的是一个界于0~32767之间的伪随机数,包括0和32767。

注意,这里产生的是伪随机数,不是真正意义上的随机数,看下面的程序:
#include "stdlib.h"
#include "stdio.h"
void main( void )
{
printf( " %6d\n", rand() );
getchar();
}
程序运行的结果是:
346
多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。

伪随机数是通过一个公式来运算出来的,所以,每次产生的伪随机数都一样。

那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。

在C 语言标准函数库中,有另一个配套函数:
void srand( unsigned int seed );
所以,要产生真正意义上的随机数,那么就要求每次提供的种子不一样,一般情况下,都设置时间为随机函数的种子。

看下面的一段程序:
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
void main( void )
{
int i;
srand( (unsigned)time( NULL ) );
printf( “ %6d\n”, rand() );
}
Output
6929
8026
21987
30734
20587
6699
22034
25051
7988
10104
每次运行这个程序,产生的随机数都不一样,这样就达到了随机数的要求了
2.random与randomize()
打开标准库中的头文件stdlib.h 就会发现有这样的一条语句:
#define random(num) (rand() % (num))
可见要产生给定范围的随机数,可以使用random()。

#define randomize() srand((unsigned)time(NULL))
所以random(num)是产生一个0—num-1的一个整数
randomize() 是随机数产生发生器(在VC中没有该函数)
注意:使用上述函数将stdlib.h包含进去。