Почему java.util.Random использует маску?

Упрощенный (то есть без параллелизма) Random.next (int биты) выглядит как

protected int next(int bits) {
    seed = (seed * multiplier + addend) & mask;
    return (int) (seed >>> (48 - bits));
}

, где используется маскирование для уменьшения начальное значение до 48 бит. Почему это лучше, чем просто

protected int next(int bits) {
    seed = seed * multiplier + addend;
    return (int) (seed >>> (64 - bits));
}

? Я довольно много читал о случайных числах, но не вижу для этого никаких причин.

5
задан maaartinus 7 April 2011 в 23:43
поделиться