Learning JS questa settimana.JS: Math.random per array
È possibile utilizzare Math.random per restituire un valore casuale in un array? Questo valore è una stringa e funziona ancora?
Learning JS questa settimana.JS: Math.random per array
È possibile utilizzare Math.random per restituire un valore casuale in un array? Questo valore è una stringa e funziona ancora?
È possibile prendere il numero in virgola mobile (compreso tra 0 e 1, non incluso) e convertirlo in un indice nell'array (intero compreso tra 0 e la lunghezza dell'array - 1). Per esempio:
var a = ['a', 'b', 'c', 'd', 'e', 'f'];
var randomValue = a[Math.floor(a.length * Math.random())];
Leggi questo:
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.
Math.round (Math.random() * a.length) può restituire un numero uguale a a.length, che non è un indice valido per l'array. –
Grazie, è stato corretto. – Rodrigo
Sì, questo è davvero possibile. Ecco qualche esempio di codice:
<script>
var arr = new Array('a', 'b', 'c', 'd', 'e');
document.write("Test " + arr[Math.floor(Math.random() * ((arr.length - 1) - 0 + 1))]);
</script>
noti che Math.floor dovrebbe essere usato al posto del Math.round, al fine di ottenere una distribuzione il numero uniforme.
Grazie per tutto il vostro aiuto.
//My array was setup as such.
var arr = New Array();
arr[0]="Long string for value.";
arr[1]="Another long string.";
//etc...
Con il vostro aiuto, e siccome so il numero esatto di valori nel mio array (2), ho appena fatto:
var randomVariable = arr[Math.floor(2*Math.random())]
Poi uscita randomVariable come vorrei.
Grazie!
Dovresti usare 'arr.length', non' 2'. –
È possibile utilizzare questo:
var array = [];
for(i = 0; i < 6; i++) {
array[i] = Math.floor(Math.random() * 60);
}
se avete bisogno di un numero compreso tra 1 e 100, basta cambiare Math.random() * 60 per Math.random() * 100.
Grazie! Sto usando stringhe di istruzioni piuttosto lunghe in ogni valore di array. C'è un modo per scrivere sintatticamente questo, quindi non è solo una linea molto grande? –
Non importa come si costruisce l'array. La parte importante è 'floor (length_of_the_array * random_value_between_0_and_1)'. –