我正在努力弄清楚如何生成1-8的两次重复随机数范围并使其成为这样的矩阵:
5 8 2 5
3 6 4 1
7 6 2 3
4 7 8 1
顺便说一句,我打算在android上做这个。
提前致谢。
答案 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;
}
}