C语言随机数

在C语言函数库中包含了一个产生随机数的函数: int rand( void ); 
函数返回的是一个界于0~32767之间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意义上的随机数,看下面的程序: 
#include "stdlib.h" 
#include "stdio.h"  
void main(  ) 

  /* 输出一个伪随机数 */   
printf( " %d\n", rand() ); } 
运行结果: 346
多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生的结果不一样),这就是所谓的伪随机数。那么,如何才能产生真正意义上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这么一个函数:
void srand( unsigned int seed ); 


参数中的seed就是用来产生一个随机数系列的种子,缺省值是1。所以,要产生真正意义上的随机数,就要求每次提供的种子不一样,一般情况下,都设置时间为随机函数的种子。看下面的一段程序:
#include "stdlib.h" 
#include "stdio.h" 
#include "time.h" 
void main(   ) 

  int i; 
  /*将当前时间设置成随机函数的种子,所以每次产生的数都不一样*/  
 srand( (unsigned)time( NULL ) );    //注: 单片机系统中,可用系统时钟滴答或者定时器产生一个不断累加的数来代替time
/ * 输出10个随机数*/   
    for( i = 0; i < 10;i++ ) 
    printf( “ %d\n”, rand() ); 

运行结果: 6929 8026 21987 30734 20587 6699 22034
25051 7988 10104 每次运行这个程序,产生的随机数都不一样,这样就达到要求了。若要输出1~10之间的随机数,可将最后一个printf中的rand()改为rand()%10+1
25051 7988 10104 
每次运行这个程序,产生的随机数都不一样,这样就达到要求了。若要输出1~10之间的随机数,可将最后一个printf中的rand()改为rand()%10+1

你可能感兴趣的:(C语言)