2009-10-04 6 views
5

Apprendre JS cette semaine.JS: Math.random pour le tableau

Est-il possible d'utiliser Math.random pour renvoyer une valeur aléatoire dans un tableau? Est-ce que cette valeur est une chaîne et fonctionne toujours?

Répondre

13

Vous pouvez prendre le nombre à virgule flottante (entre 0 et 1, non inclusif) et le convertir en index pour le tableau (entier compris entre 0 et la longueur du tableau - 1). Par exemple:

var a = ['a', 'b', 'c', 'd', 'e', 'f']; 
var randomValue = a[Math.floor(a.length * Math.random())]; 
+0

Merci! J'utilise des chaînes d'instructions plus longues dans chaque valeur de tableau. Existe-t-il un moyen d'écrire de manière syntaxique, donc ce n'est pas juste une très grande ligne? –

+1

Peu importe comment vous construisez le tableau. La partie importante est 'floor (length_of_the_array * random_value_between_0_and_1)'. –

0

Lire ceci:

var arr = [1, 2, 3, 4, 5, 6]; 
var r = arr[Math.floor(Math.random()*a.length)]; // r will store a value from a pseudo-random position at arr. 
+0

Math.round (Math.random() * a.length) peut renvoyer un nombre égal à a.length, ce qui n'est pas un index valide pour le tableau. –

+0

Merci, il a été réparé. – Rodrigo

2

Oui, cela est en effet possible. Voici quelques exemples de code:

<script> 
    var arr = new Array('a', 'b', 'c', 'd', 'e'); 
    document.write("Test " + arr[Math.floor(Math.random() * ((arr.length - 1) - 0 + 1))]); 
</script> 

Notez que Math.floor doit être utilisé au lieu de Math.round, afin d'obtenir une répartition uniforme de nombre.

1

Merci pour votre aide.

//My array was setup as such. 
var arr = New Array(); 
arr[0]="Long string for value."; 
arr[1]="Another long string."; 
//etc... 

Avec votre aide, et comme je sais le nombre exact de valeurs dans mon tableau (2), je viens de le faire:

var randomVariable = arr[Math.floor(2*Math.random())] 

Puis sortie randomVariable que je souhaite.

Merci!

+0

Vous devez utiliser 'arr.length', pas' 2'. –

0

Vous pouvez utiliser ceci:

var array = []; 
for(i = 0; i < 6; i++) { 
array[i] = Math.floor(Math.random() * 60); 
} 

si vous avez besoin d'un nombre compris entre 1 et 100, il suffit de changer Math.random() * 60 à Math.random() * 100.