Random.nextInt() % n has
1 to n-1 inclusive-1 to -(n-1) inclusiveMany users expect a uniformly distributed random integer between 0 and n-1 inclusive, but you must use random.nextInt(n) to get that behavior. If the original behavior is truly desired, use (random.nextBoolean() ? 1 : -1) * random.nextInt(n).