JAVA中的random.nextInt(33)问题

我进去这个nextInt()方法里看不太明白代码神意思?希望大神讲解一下感谢。publicintnextInt(intn){if(n<=0)thrownewIllegal... 我进去这个nextInt()方法里看不太明白代码神意思?希望大神讲解一下感谢。
public int nextInt(int n) {
if (n <= 0)
throw new IllegalArgumentException("n must be positive");

if ((n & -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31);

int bits, val;
do {
bits = next(31);
val = bits % n;
} while (bits - val + (n-1) < 0);
return val;
}
展开
 我来答
w8104254
2015-07-22 · TA获得超过113个赞
知道小有建树答主
回答量:276
采纳率:100%
帮助的人:72.5万
展开全部
随机产生一个大于等于0,小于33的整形数
追问
if ((n & -n) == n)  // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31);这段是啥意思?讲解一下,我知道他的目的是生成一个整数。
追答
具体的源码我没分析过,也没有精力去研究,知道结果可以用我觉得就可以了,所有问题都搞明白太累了、。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式