opencv rand函数

关于rand()的用法求解释

帖子AngleLove » 2011-08-06 17:40

我知道int rand(void)返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子, rand()在调用时会自动设随机数种子为1。但是有句代码我还是不懂,急求解释!
代码如下:
cvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255);
rand()&255 代表什么意思啊?
AngleLove
OpenCV小学生
 
帖子: 8
注册: 2011-08-03 10:16

Re: 关于rand()的用法求解释

帖子guoming0000 » 2011-08-07 19:03

AngleLove 写道:我知道int rand(void)返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子, rand()在调用时会自动设随机数种子为1。但是有句代码我还是不懂,急求解释!
代码如下:
cvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255);
rand()&255 代表什么意思啊?


这个语句和这句话 rand()%256意思是一样的,就是随即产生0~255的整数。
这个人使用了&,也就是AND运算,而255的二进制是11111111,而 rand()产生的是-32768~32767之间的数,这个255的二进制前面补零,0000 0000 1111 1111,在和 rand()进行想与操作。。。。反正最有意思就是和上面求余一样。只是这样写的人比较少。
guoming0000
OpenCV硕士生
 
帖子: 264
注册: 2011-03-11 13:59

Re: 关于rand()的用法求解释

帖子AngleLove » 2011-08-08 9:15

呵呵,非常感谢!我也了解了一些,那个“&”是进行“位与”运算的,正如你说的255的二进制是1111 1111,将255的二进制前面补零,0000 0000 1111 1111,而 rand()与255进行“位与”运算就是产生一个0~255之间的随机数!
最后由 AngleLove 编辑于 2011-08-08 11:40,总共编辑了 1 次
AngleLove
OpenCV小学生
 
帖子: 8
注册: 2011-08-03 10:16

Re: 关于rand()的用法求解释

帖子mochen2011 » 2011-08-08 10:57

代码: 全选
cvScalar color = CV_RGB(rand()&255,rand()&255,rand()&255);

赞同楼上的说法。写成 rand()&255,实际上是等价于 rand()%256。这是显示内功的一种方式,找工作的时候,
你这样一写,给人的感觉比用 rand()%256要好得多。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值