从整数列表中获取随机和唯一的数字。数组方法

时间:2013-01-28 13:46:12

标签: java arrays

private int[] list = {1,2,3,4,5,6,7,8,9};

我应该使用什么代码来获取此列表中随机但唯一的数字。 请为我提供最简单的初学者方式。 谢谢你的帮助。

5 个答案:

答案 0 :(得分:6)

将您的声明更改为:

private Integer[] list = {1,2,3,4,5,6,7,8,9};

然后在类的任何方法中执行,因为变量是private

List<Integer> l = Arrays.asList(list);
Collections.shuffle(l);

这会随机选择所有列表,因此它会做你想要的。

请注意,它也会影响原始数组list,因为从Arrays.asList调用返回的列表将在内部使用您的数组。

答案 1 :(得分:2)

我建议您执行shuffle,然后按照随机播放结果中的顺序选择数字。

答案 2 :(得分:0)

Integer[] list = {1,2,3,4,5,6,7,8,9};
Collections.shuffle(Arrays.asList(list));

答案 3 :(得分:0)

在这些场景中使用的一般算法是返回index random number modulo length of the array

答案 4 :(得分:0)

您可以尝试以下代码:

public static boolean empty(Integer[] list){
    for(int i = 0;i<list.length;i++){
        if(list[i] != null){
            return false;
        }
    }
    return true;
}

public static void main(String[] args){
    Integer[] list = {1,2,3,4,5,6,7,8,9};
    Random r = new Random();
    int index = 0;
    while(!empty(list)){
        index = r.nextInt(list.length);
        if(list[index] != null){
            System.out.println(list[index]);
            list[index] = null;
        }
    }
}

这将生成一个介于0和列表最后一个索引之间的随机整数,如果该索引不为null,则在该索引处打印该项,然后将该项设为null。静态函数'empty',检查数组中的每个项是否为空(即每个项都已被看到)。当'empty'返回true时,'while'循环终止。使用'Integer'类型而不是'int'的原因是'int'变量不能为null,而'Integer'变量可以。

'empty'函数一次搜索一个索引,如果找到非空索引则立即返回false。这是一种节省时间的机制,意味着该功能不会执行任何不必要的搜索。如果该循环完全完成,那么我们知道没有找到非null条目,因此返回true。