1+(int)(10.0*rand()/(RAND_MAX+1.0));这个是什么意思,请解释下,谢谢 25

最好详细点,不要百度给我,我就是看很多百度上面的不懂才问的,请明白人回答。再次感谢!!!(int)10.0*rand()/(RAND_MAX+1.0);随机数是0~9,r... 最好详细点,不要百度给我,我就是看很多百度上面的不懂才问的,请明白人回答。再次感谢!!!
(int)10.0*rand()/(RAND_MAX+1.0);随机数是0~9,
rand()%10;随机数是0~9,
第一个是怎么算的额??不能理解啊
展开
 我来答
莫道無情
2019-11-25 · TA获得超过1.5万个赞
知道答主
回答量:317
采纳率:100%
帮助的人:8.7万
展开全部

1+(int)(10.0*rand()/(RAND_MAX+1.0));整个语句的作用是产生随机数1~10。

rand():用来产生一个随机数的函数,范围是[0, RAND_MAX],RAND_MAX是C中stdlib.h中宏定义的一个字符常量:

#define RAND_MAX Ox7FFF

其值最小为0,最大为Ox7FFF。

10.0*rand() 得到一个浮点数,是10倍的[0, RAND_MAX],结果是[0.0, 10.0*RAND_MAX]。

/(RAND_MAX + 1.0):改变取值范围为 [0.0 , 1.0)

(int)(10.0*rand() / (RAND_MAX + 1.0)) :在[0.0 , 10.0)中取整:0,1,2...9

扩展资料:

 rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。

如果要产生0~10的10个整数,可以表达为: 

int N = rand() % 11; 

这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样: 

int N = 1 + rand() % 10; 

总结来说,可以表示为: 

a + rand() % n

其中的a是起始值,n是整数的范围。 

a + rand() % (b-a+1) 就表示a~b之间的一个随机数。

百度网友f380e50
2019-03-06
知道答主
回答量:1
采纳率:0%
帮助的人:770
展开全部
1+(int)(10.0*rand()/(RAND_MAX+1.0)) 的意思是生成1到10的随机数
(int)10.0*rand()/(RAND_MAX+1.0)的意思是将0到RAND_MAX之间的整数等分成十份,如果随机的生成数落在第一份,则映射成0,如落在第二份,则映射成1。。。。。。如落在第十分,则映射成9.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2013-06-24 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:4001万
展开全部
10.0*rand()/(RAND_MAX+1.0);

其实就是随机一个0~10之间不包括10的一个浮点数,然后强制转换成int就是0~9之间的整数了
这个跟第二个不同的地方就是,在多次随机出来的结果,前者理论上会更平均,而后者仅仅是和10求余得到的结果,没前面的结果来得平均
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
用心说话
2013-06-24 · TA获得超过164个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:137万
展开全部
1) 正确写法应该是(int)(10.0*rand()/(RAND_MAX+1.0));
rand()除以随机数最大值+1,结果是(0 1)的小数,再乘10同时取整数就是0~9
2)rand()对10取余,就是0~9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大庆金矿
2018-04-14
知道答主
回答量:1
采纳率:0%
帮助的人:882
展开全部
闭区间0到99随机数对100求余,得到的是闭区间0到99,得到每个数的概率都相等,
但是闭区间0到100随机数对100求余,得到的虽然也是闭区间0到99,但是此时求余后得到0的概率增大,是得到其他数的二倍。
所以这种小数量级的总数不可以用第二种方法。
由于RAND_MAX值对于确定的库函数是一个定值,最小是32767,若对10求余,概率只超过了1/3277,所以不是特别严谨时,可以用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式