У меня есть массив, содержащий значения 1, 2 и 3 int
, и я хочу случайным образом присвоить все эти значения трем различным переменным (без повторения каких-либо значений). Это то, что я получил до сих пор, но когда я его тестировал, он иногда дублировал одно из значений.
Вопрос: как я могу случайным образом распределить все элементы массива по нескольким различным переменным?
//method
public static double calculate(int randomVal[]){
Random random = new Random();
double randomAnswer = 0;
for(int i = 0;i < randomVal.length; i++){
randomAnswer = (randomVal[random.nextInt(randomVal.length)]);
}
return randomAnswer;
//create array
int[] randomVal = new int[] {1,2,3};
double solution1 = MathGame.calculate(randomVal);
double solution2 = MathGame.calculate(randomVal);
double solution3 = MathGame.calculate(randomVal);
3 ответа
Если вы можете использовать Integer[]
, вы можете использовать Collections.shuffle(List<?>)
и Arrays.asList(T...)
, а затем Arrays.toString(Object[])
, чтобы отображать его как
Integer[] randomVal = new Integer[] { 1, 2, 3 };
Collections.shuffle(Arrays.asList(randomVal));
System.out.println(Arrays.toString(randomVal));
Если вы хотите просто позволить Java обрабатывать это и использовать набор, как описано здесь
Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));
Iterator<T> it=mySet.iterator();
//assign variables using it.next();
Вот как можно перетасовать массив целых чисел
void shuffle(int[] a) {
Random rnd = new Random();
for (int i = a.length; i > 1; i--) {
int r = rnd.nextInt(i);
int t = a[i - 1];
a[i - 1] = a[r];
a[r] = t;
}
}
Тогда просто используйте его элементы
int[] a = { 1, 2, 3 };
shuffle(a);
double solution1 = a[0];
double solution2 = a[1];
double solution3 = a[2];
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.