0

我看过 Randomize or shuffle an array 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(options[0]);

4

2 回答 2

6

使用Collections.shuffle

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

在线查看它:ideone

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

有关的

于 2012-08-08T20:03:41.227 回答
0

只需通过一组布尔值保留三个布尔值。一旦您点击 0、1 或 2 索引,请将它们设置为 true。

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

于 2012-08-08T20:03:49.037 回答