我有一个包含int
值1,2和3的数组,我想将所有这些值随机分配给三个不同的变量(不重复任何值)。这是我到目前为止所得到的,但是当我测试它时,它有时会复制其中一个值。
问题:如何将数组的所有元素随机分配到几个不同的变量?
//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);
答案 0 :(得分:2)
如果您可以使用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));
答案 1 :(得分:0)
这就是你可以如何改变一系列的整数
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];
答案 2 :(得分:0)
如果你想让Java处理它并使用here
所描述的集合Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));
Iterator<T> it=mySet.iterator();
//assign variables using it.next();