Итак, вот одна из самых простых вещей, которые можно сделать:
Random rng = new Random();
int a = rng.nextInt(10);
int b = rng.nextInt(10);
Пока все хорошо. Но мы хотим избежать равных a и b, поэтому, естественно, мы делаем:
Random rng = new Random();
int a = rng.nextInt(10);
int b = rng.nextInt(10);
while (a == b){
b = rng.nextInt(10);
}
Однако, к моему очень, очень большому удивлению, цикл while никогда не завершается. Никогда.
Я понимаю, что теоретически со случайными числами вы могли бы иметь бесконечную последовательность из одного числа. Но этот код работает уже 10 минут, и он не вышел из цикла.
Что с этим? Я использую JDK 6 Update 16 в последней версии Linux Mint.