2010-01-09 5 views
0

J'ai besoin d'un tableau 2d [9,16] avec 144 nombres de 1-> 36 dans un ordre aléatoire (donc chaque nombre est répété 4 fois).Shuffle un tableau en JavaScript?

+0

Il ressemble plus à vous voulez un remaniement * algorithme *. Les chiffres eux-mêmes ne sont pas du tout aléatoires - juste leur ordre. Je suggère d'éditer la question pour clarifier cela. – Eilon

Répondre

4

Quelque chose comme:

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

où vous utilisez shuffle .

+0

J'ai oublié de dire que chaque numéro est répété 4 fois, ce n'est pas seulement aléatoire. –

+0

Donc, il n'y a rien de tel que: Enumerable.Range (1,36)? –

+0

Non, pas en JavaScript. – Eilon

2

En supposant que vous ne se soucient pas de la distribution, juste stocker les résultats de

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

pour chaque élément du tableau

+0

Cela ne répétera pas chaque nombre 4 fois cependant. – jvenema

0

Comment est sur:

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