分析代码如何使前15位随机
c库函数rand()通常返回15个随机位,使用此函数实现bigrand()返回至少30个随机位。 —— 节选自《编程珠玑》12.1
答案如下
int bigrand()
{
return RAND_MAX * rand() + rand();
}
+ rand()
是让后15位随机,但为什么RAND_MAX * rand()
rand()与最大值相乘可以让前15位是随机的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这就跟占位一样的,比如有两个8位的数,要组成16位的,怎么组合,一个放在高位,一个放在地位。
其实这个问题按移位来想就很简单啦。。。
拿个栗子来说吧
output
首先是a的二进制输出,然后是b的二进制输出,然后我让a向左移15位,这样它就空出了15个低位,然后我让b直接加过去,这样就产生了一个30位的随机数啦,当然我们知道,
<<
一次相当于*2
,所以那个RAND_MAX
就是2^15
咯。