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

时间:2015-02-20 05:06:34

标签: java arrays random double

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

3 个答案:

答案 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();