Есть только 8 числа от 0-7 и так, что вы действительно спрашиваете, для чисел от 0-7 в случайном порядке.
Самый быстрый способ сделать это как для кодирования, так и для исполнения - это перетасовать набор целых чисел.
public class Test {
public static void main(String[] args){
List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7);
Collections.shuffle(list);
for(int i : list){
System.out.println(i);
}
}
}
Если вы хотите, чтобы написать перетасовки алгоритм самостоятельно вы можете сделать это, так обменивать каждый элемент (бар последний) в массиве со случайным индексом. Причина, по которой вы не делаете последнее, состоит в том, что она искажает результат. См Fisher Yates Shuffle
Просто потому, что я не мог сопротивляться здесь является реализация Java Фишера Йейтс:
public class Test {
public static void main(String[] args){
Random rnd = new SecureRandom();
int[] arr = new int[]{0,1,2,3,4,5,6,7};
for(int i = 0; i < arr.length - 1; i++){
int swapIndex = rnd.nextInt(8);
int tmp = arr[i];
arr[i] = arr[swapIndex];
arr[swapIndex] = tmp;
}
System.out.println(Arrays.toString(arr));
}
}
Используйте [набор] (http://docs.oracle.com/javase/7/docs/ api/java/util/Set.html), чтобы добавить свой номер. В наборе дубликатов не разрешается и цикл, пока вы не получите сколько вам образцов. Другой подход заключается в использовании [Collections.shuffle (yourCollection)] (http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#shuffle (java.util.List)), если набор образцов не слишком большой для построения. – StackFlowed
Создайте 'ArrayList', а затем перетасуйте его через' Collections.shuffle (...) '. Это либо это, либо сохранение выбранных номеров, и повторное выбор, если выбранный номер уже выбран. Вы можете это сделать, я знаю, что вы можете. –
Вам нужен алгоритм перетасовки. – CoverosGene