此函数为
java.util.Random
.它返回一个均匀分布在0和给定n之间的伪随机int.不幸的是我没有得到它.
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; }
我的问题是:
>为什么要特别处理n是两个权力的情况?只是为了表演吗?
为什么要拒绝比特数val(n-1)< 0?