怎样获得在一定范围内的随机数?

怎样获得在一定范围内的随机数?
直接的方法是
rand()  %  N /*  不好 */
试图返回从0 到N − 1 的数字。但这个方法不好, 因为许多随机数发生器的低位比特并不随机, 参见问题13.16。一个较好的方法是:
(int)((double)rand()  /  ((double)RAND_MAX  +  1)  *  N)
如果你不希望使用浮点, 另一个方法是:
rand()  /  (RAND_MAX  /  N  +  1)
两种方法都需要知道RAND MAX, 而且假设N 要远远小于RAND MAX。
RAND MAX 在ANSI 里#define 在<stdlib.h>。
顺便提一下, RAND MAX 是个常数, 它告诉你C 库函数rand() 的固定范围。你不可以设RAND MAX 为其它的值, 也没有办法要求rand() 返回其它范围的值。
如果你用的随机数发生器返回的是0 到1 的浮点值, 要取得范围在0 到N − 1内的整数, 只要将随机数乘以N 就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值