我需要一个2d数组[9,16],其中144个数字来自1-> 36,随机顺序(所以每个数字重复4次)。
答案 0 :(得分:4)
类似的东西:
sourcearr = array();
for(i = 0; i < 36; i++){
for(j = 0; j < 4; j++){
sourcearr[i+j] = i;
}
}
sourcearr = shuffle(sourcearr)
k = 0;
myrandarr = array();
for(i = 0; i < 9; i++){
myrandarr[i] = array();
for(j = 0; j < 16; j++){
myrandarr[i][j] = sourcearr[k++];
}
}
您使用shuffle。
答案 1 :(得分:2)
假设您不关心分发,只需存储
的结果Math.floor(Math.random()*36) + 1
对于数组的每个元素
答案 2 :(得分:0)
怎么样:
var source = array(); var shuffled = array(); for(var i=0;i<4;i++) { for(var j=0; j<36;j++) { source[i*j] = j+1; } } while( source.length > 0 ) { var index = Math.floor(Math.random()*source.length); var element = source.splice(index,1); shuffled.push(element); }