打印
[C语言]

产生随机数函数rand的用法不明白 求大神进

[复制链接]
1199|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-8-16 10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yanghelovehuang 于 2018-8-16 11:07 编辑

请问下各位大佬,2 * (rand() / (RAND_MAX + 1.0))这个代码是产生0-2的随机数,但是代码我有点不太明朗白:
rand产生的随机数范围是0-RAND_MAX,最大的数是RAND_MAX, 也就是说RAND_MAX + 1.0 > rand(), 大家都知道c语言中‘/’符号在运算公式中是去商的,而且取得是整数,那么问题来了:
rand() < RAND_MAX 所以在数**算中rand()除以RAND_MAX等于0.几,而/符号又取整数,所以rand()/RAND_MAX只能是0,而上面的公式也应该等于0,为什么会是0-2的范围呢?这里我不明白求知道的大神指导下。

相关帖子

沙发
ayb_ice| | 2018-8-16 11:45 | 只看该作者
RAND_MAX定义的是多少呢

使用特权

评论回复
板凳
ayb_ice| | 2018-8-16 11:45 | 只看该作者
看清楚了,是浮点操作

使用特权

评论回复
地板
yanghelovehuang|  楼主 | 2018-8-16 16:48 | 只看该作者
ayb_ice 发表于 2018-8-16 11:45
看清楚了,是浮点操作

嗯嗯 确实是这样 我实验也是 只要加上小数点 得到的值就是小数点了, 请问下大神在浮点操作里’/‘符号就没有取整的意思了是吧

使用特权

评论回复
5
ayb_ice| | 2018-8-16 17:06 | 只看该作者
yanghelovehuang 发表于 2018-8-16 16:48
嗯嗯 确实是这样 我实验也是 只要加上小数点 得到的值就是小数点了, 请问下大神在浮点操作里’/‘符号就 ...

浮点就是带小数的操作,如果将浮点结果赋值给整型变量会自动取整,丢弃小数部分

使用特权

评论回复
6
yanghelovehuang|  楼主 | 2018-8-17 09:20 | 只看该作者
ayb_ice 发表于 2018-8-16 17:06
浮点就是带小数的操作,如果将浮点结果赋值给整型变量会自动取整,丢弃小数部分 ...

嗯嗯 谢谢啊  谢谢您能回复

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝