如何组合随机数矩阵

时间:2011-07-07 10:09:42

标签: android algorithm

我正在努力弄清楚如何生成1-8的两次重复随机数范围并使其成为这样的矩阵:

5 8 2 5

3 6 4 1

7 6 2 3

4 7 8 1

顺便说一句,我打算在android上做这个。

提前致谢。

2 个答案:

答案 0 :(得分:4)

我假设你想要一个包含所有数字1-8两次的随机4x4matrix。

您可以轻松地将16个数字列表转换为4x4矩阵。所以你需要的是1-8个数字的随机列表。

List<Integer> list = new ArrayList<Integer>();
for (int i = 1; i <= 8; i++) {
  list.add(i);
  list.add(i);
}
// list  = [1,1,2,2,3,3,..,8,8];
Collections.shuffle(list);
// gives something like [1,4,5,2,4,7,..8,1]

要在矩阵中打开此列表,只需逐行读取,一次读取4个数字。

答案 1 :(得分:0)

你真正想要的不是随机数。但是随机顺序中的一组特定数字!

首先按升序排列所需的设置

int[] mySet = Array{1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8}

然后执行类似

的操作
for (x = 1;99,x++) {
    from = (int)(Math.random()*8);
    to = (int)(Math.random()*8);
    if (from != to) {
       int swap = mySet[to];
       mySet[to] = mySet[from];
       mySet[from] = swap;
    }
}