数据结构(用c语言描述),是随机快速排序算法,划红线部分那里我不懂,希望有学霸能解释一下,越详细越好?

我把图放下面,多谢了

这是一个randomi的函数,作用是返回一个随机值,在1到r之间。
return后面那个公式就是返回的随机数字。
1*rand()是随机得到一个数字,在除以RAND_MAX得到的是一个随机的百分比。
RAND_MAX就是rand()的范围大小。
随机百分比得到了,在乘(r-1)就得到这个(r-1)范围内随机比例。
最后再加上1保证得到的数字是在1和r之间的。
这样就能输出一个随机数字了。
精髓是后面那个除法得到一个随机的比例,前面的乘法和加法都是为了限定范围的修修补补。追问

好的,多谢,懂了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-02-26
rand函数产生的随机整数的范围是[0,RAND_MAX]。

其中,RAND_MAX是一个预定义的宏,其值等于int类型的最大值。

所以,1.0*rand()/RAND_MAX的结果的范围是[0,1],
(r-l)*(1.0*rand()/RAND_MAX)的结果的范围是[0,r-l],
而l+(r-l)*(1.0*rand()/RAND_MAX)的结果的范围就是[l,r]。

这就是一个公式,用来产生[l,r]之间的随机整数的。追问

好的,懂了,多谢

追答

采纳下呗

本回答被提问者采纳
相似回答