Ваша проблема здесь в том, что вы используете всегда одно и то же начальное число, поэтому шансы на генерацию одного и того же числа очень велики. Прежде всего вы должны понять, что невозможно сгенерировать чисто случайное число, что дает вам Java. достойный механизм, но опирается на семя.
Обычной практикой является использование текущей даты и времени в миллисекундах, поэтому, если вы сделаете:
new Random(System.currentTimeMillis())
Вы обнаружите, что вы не получаете дубликаты. Вы можете попробовать это с этим кодом:
public static void main (String... args){
for (int i=0; i<10000; i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Random random = new Random(System.currentTimeMillis());
System.out.println(random.nextInt());
}
}