JS: Math.random для массива - PullRequest
       182

JS: Math.random для массива

6 голосов
/ 04 октября 2009

Обучение JS на этой неделе.

Можно ли использовать Math.random для возврата случайного значения в массиве? Это значение является строкой и все еще работает?

Ответы [ 5 ]

17 голосов
/ 04 октября 2009

Вы можете взять число с плавающей запятой (от 0 до 1, не включительно) и преобразовать его в индекс в массив (целое число от 0 до длины массива - 1). Например:

var a = ['a', 'b', 'c', 'd', 'e', 'f'];
var randomValue = a[Math.floor(a.length * Math.random())];
2 голосов
/ 04 октября 2009

Да, это действительно возможно. Вот пример кода:

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

Обратите внимание, что Math.floor должен использоваться вместо Math.round, чтобы получить равномерное распределение чисел.

1 голос
/ 05 октября 2009

Спасибо за вашу помощь.

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

С вашей помощью, и так как я знаю точное количество значений в моем массиве (2), я просто сделал:

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

Затем выведите randomVariable так, как я хочу.

Спасибо!

0 голосов
/ 15 февраля 2015

Вы можете использовать это:

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

если вам нужно число от 1 до 100, просто измените Math.random () * 60 на Math.random () * 100.

0 голосов
/ 04 октября 2009

Читать это:

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.
...