2010-01-09 58 views
0

我需要一個2d數組[9,16],它有144個數字,從1-> 36以隨機順序排列(所以每個數字重複4次)。在JavaScript中隨機播放數組?

+0

這聽起來更像你想要一個洗牌* *算法。數字本身並不是隨機的 - 只是他們的順序。我建議編輯這個問題來澄清這個問題。 – Eilon 2010-01-09 04:45:53

回答

4

喜歡的東西的每一個元素:在您使用shuffle

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++]; 
    } 
} 

+0

我忘了說每個數字重複4次,它不只是隨機的。 – 2010-01-09 04:44:22

+0

所以沒有什麼比如:Enumerable.Range(1,36)? – 2010-01-09 04:53:45

+0

不是,而不是JavaScript。 – Eilon 2010-01-09 04:57:18

2

假設你不關心的分佈,只儲存的

Math.floor(Math.random()*36) + 1 

結果爲陣

+0

然而,這將不會重複每個數字4次。 – jvenema 2010-01-09 05:11:37

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); 
}