C++ rand

本文介绍了C++中的rand()函数用于生成伪随机数,其周期与RAND_MAX相关,通常在不同平台有不同的取值。为了获得不同序列,需使用srand()设置随机数种子,建议使用当前时间作为种子。此外,还提供了生成指定范围内随机数的公式,并强调了避免rand()除以常数值可能导致的错误。最后,注意到rand()返回整数,若需要浮点数,应转换为double类型的比例值。
摘要由CSDN通过智能技术生成
C++ rand
 
  • rand() 产生随机数
    1. 伪随机数
    2. 周期是65535(猜测周期应该与RAND_MAX 有关)。即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。
    3. rand() 返回值非负整数,范围为[0, RAND_MAX]。由RAND_MAX决定。不同操作系统或编译器值会不同。
      1. 在VS中为“ #define RAND_MAX 0x7fff”,即为 32767。
      2. centos7中为“#define RAND_MAX 0x7fff ffff”,即 2147483647。
  • srand 设置随机数种子
    1. 若不设置随机数种子,rand() 产生的随机数在每次运行的时候都是与上一次相同的。
    2. 若要不同, 用函数 srand() 初始化它。可以利用 srand((unsigned int)(time(NULL)) 的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。
  • 生成指定范围内随机数的公式:
    1. [a,a+n]的随机数,a + rand() % n;a 是起始值,n 是范围。
    2.  [a,b) 的随机整数,使用 (rand() % (b-a))+ a;
    3.  [a,b] 的随机整数,使用 (rand() % (b-a+1))+ a;
    4. (a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1;
    5.  0~1 之间的浮点数,使用 rand() / double(RAND_MAX)。
  • 注意:
    1. rand返回的是整数,如果直接使用 rand()/32768,得到的结果始终为0。需要改为rand()/ (double)32768,才能得到想要的效果。(网上有许多滥用“rand()/32768”的代码,需要注意)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值