如何随机分布数组的所有元素?

How to randomly distribute all elements of an array?

我有一个包含 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);

如果你可以使用 Integer[] 那么你可能会使用 Collections.shuffle(List<?>) and Arrays.asList(T...) and then Arrays.toString(Object[]) 来显示它

Integer[] randomVal = new Integer[] { 1, 2, 3 };
Collections.shuffle(Arrays.asList(randomVal));
System.out.println(Arrays.toString(randomVal));

这就是打乱整数数组的方法

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 处理它并使用描述的集合 here

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));

Iterator<T> it=mySet.iterator();

//assign variables using it.next();