原创 随机数的产生

2009-11-25 22:15 1964 2 2 分类: MCU/ 嵌入式
rand()函数可以产生0到RAND_MAX(RAND_MAX是头文件<stdlib.h>中定义的符号常量)之间的随机整数。ANSI标准指出,RAND_MAX的值的范围至少必须是32767,即双字节整数的最大值。
注意,实际上rand()函数产生的是伪随机数,每次执行这个程序时,产生的随机书的顺序是一样的。

利用srand()可以程序每次执行后产生一组不同顺序的随机数。函数srand(unsigned)需要一个unsigned整型参数,在每次程序执行时使用rand()去生成一组不同的随机数
(注意:函数srand(unsigned)需要一个unsigned整型参数,在每次程序执行时使用rand()去生成一组不同的随机数,而不是代替rand函数来产生随机数)
     #include <stdlib.h>
     #include <stdio.h>
    
     int main ()
  {
     int i;
     unsigned seed;

     printf ("ENTER seed:");
     scanf ("%u",&seed);
     srand (seed);
    
     for (i = 1; i <= 10;i++)
     {
         printf ("%10d", 1 +(rand()% 6));

     if ( i % 5 == 0)
        printf ("\n");
     }
 
   return 0;
  }
运行程序可以注意到,假定提供了不同的种子,那么每次程序运行时都会获得不同顺序的随机数。

如果希望无需每次都输入一个种子就能够进行随机化,那么可以使用语句:srand(time(NULL));
这会使得计算机读取自己的时钟获得种子值。函数time()能够在很短的时间内返回计算机当前时间,将其转换为无符号整数作为随机数产生的种子。函数time使用NULL作为参数,NULL能够取消对time函数调用的这种功能。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条