C/C++:伪随机数 srand(time(0)) rand() 简单使用

头文件

  • int rand(void)与void srand(unsigned int seed)属于stdlib.h头文件
  • time_t time(time_t * t)属于time.h头文件
  • ftime(struct timeb * tp)属于sys / timeb.h头文件

功能描述

  • rand()产生的是伪随机数。若直接使用,每次执行是相同的;若使用srand()初始化,每次执行不同(有几率随机为相同数)
  • rand 随机数值范围为0至RAND_MAX,随机的几率相同
  • rand()用户未设定随机数种子时,系统默认的随机数种子为1
  • srand()函数用来设置rand()产生随机数时的随机数种子
  • srand()中的参数seed必须为整数,通常情况下会使用time(0)的返回值或NULL
  • time()的返回值:距离1970年1月1日从0时0分0秒到现在的秒数
  • time()中参数指针为空,则会把该函数的返回值存到吨指向的内存空间
  • ftime()中参数结构体中可返回:1970-01-01至今的秒数,毫秒数)
struct   timeb{
       time_t   time;                    /* 为1970-01-01至今的秒数*/
       unsigned   short   millitm;       /* 千分之一秒即毫秒 */
       short   timezonel;       /* 为目前时区和Greenwich相差的时间,单位为分钟 */
       short   dstflag;         /* 为日光节约时间的修正状态,如果为非0代表启用日光节约时间修正 */
};

示例

  1. 以秒为随机数种子
    unsigned int tseed = time(NULL);
    srand(tseed);
    unsigned int crand = rand();

     

  2. 以秒为随机数种子产生一定范围内的数值
    unsigned int tseed = time(NULL);
    srand(tseed);
    // 生成[b,a]范围内的数值,包括b和a
    unsigned int range = a - b + 1;
    unsigned int crand = rand() % range + b;
    // 生成[b,a)范围内的数值,包括b,不包括a
    unsigned int range = a - b;
    unsigned int crand = rand() % range + b;
    

     

  3. 以毫秒为随机数种子
    struct timeb timeSeed;
    ftime(&timeSeed);
    srand(timeSeed.time * 1000 + timeSeed.millitm);  // milli time
    unsigned int crand = rand();

     

  4. 以毫秒为随机数种子产生一定范围内的数值
    struct timeb timeSeed;
    ftime(&timeSeed);
    srand(timeSeed.time * 1000 + timeSeed.millitm);  // milli time
    // 生成[b,a]范围内的数值,包括b和a
    unsigned int range = a - b + 1;
    unsigned int crand = rand() % range + b;
    // 生成[b,a)范围内的数值,包括b,不包括a
    unsigned int range = a - b;
    unsigned int crand = rand() % range + b;
    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值