c语言中rand函数的使用


rand函数是包含在stdlib.h头文件里的一个产生随机数的函数,使用方法是rand()%(n-m+1)+m,这个式子表示产生[m,n]范围内的随机数。

因为,对于任意数,0<= rand()%(n-m+1)<= n-m,

        ----->,0+m<= rand()%(n-  m+ 1)+ m<= (n- m)+ m。

就比如你要生成[0,69]范围内的随机数,就要写成rand()%70 => rand%(69+ 1)+ 0,这里的69就相当于 rand()%((69- 0+ 1+ 0)。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
   int i, n;
   
   n = 5;
   
   /* 初始化随机数发生器 */
    srand(time(NULL));   //随机种子,获得不同的随机数
 
   /* 输出 0 到 69 之间的 5 个随机数 */
   for( i = 0 ; i < n ; i++ ) {
      printf("%d\n", rand() % 70);
   }
   
  return(0);
}

注意这里的srand()函数是随机数发生器,void srand(unsigned int seed):返回值为空, 就是设置随机种子的,当我们不设置随机种子的时候,默认设置的种子为 1,也就是srand(1)。

使用rand()时,如果不设定随机数序列标签则只会得到重复的随机数序列,其叫做伪随机数,seed的作用:srand函数的作用是根据参数seed,设置一个随机起始点,而rand函数根据这个起始点发生随机数序列。

如果我们想要程序每次执行生成的随机数都不一样就需要使种子的值一直在变化。这里我们使用time.h里的time函数, timer=NULL时得到当前日历时间(从1970-01-01 00:00:00到现在的秒数)。以此来得到不同的种子。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM