java随机化数组中的索引

时间:2012-08-08 20:00:56

标签: java arrays indices

我查看了随机化或随机播放数组Randomize or shuffle an array

我不确定这是否是最佳方法。

我想随机化一个包含3个项目的数组的索引。

12 4 5

int numbers[] = new int[3];

我尝试使用Maths.Random

int randomoption2 = opmin +(int)(Math.random()*((opmax - opmin)+ 1));

但是我有一个重复索引值的问题。随机化指数的最佳方法是什么,所以没有重复。

例如

a[1] = 2;

我不希望数组中的两个元素返回索引为一个

http://www.exampledepot.com/egs/java.util/coll_Shuffle.html

public class randomorder {

        public static void main(String [] args)
        {
            randomorder();  
            System.out.println(randomorder());
        }

        public static ArrayList randomorder(){
            ArrayList nums = new ArrayList();
            nums.add(1);
            nums.add(2);
            nums.add(3);

            Collections.shuffle(nums);
            return nums;
        }
    }

我现在需要将每个数字存储在变量中以便输出

的System.out.println(项[0]);

2 个答案:

答案 0 :(得分:6)

使用Collections.shuffle

Integer[] numbers = { 1, 2, 3, 4, 5 };
Collections.shuffle(Arrays.asList(numbers));

查看在线工作:ideone

它在内部使用Fisher-Yates shuffle 。这是一种有效的混洗算法,不会给你重复。

相关

答案 1 :(得分:0)

只需通过一系列布尔值保留三个布尔值。一旦你点击0,1或2索引就将它们设置为true。

选择一个随机位置并执行while(boolean [number chosen] == true)重做随机选择。