Эта функция от java.util.Random. Он возвращает псевдослучайное выражение int, равномерно распределенное между 0 и данным n. К сожалению, я этого не понимал.
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- это сила двух специально? Это просто для производительности? -  Зачем это делать, чтобы отклонить числа, которые 
bits - val + (n-1) < 0?