Создание 10 уникальных случайных чисел от 1 до 10 в javascript

Мое точное требование состоит в том, чтобы возвращать все числа от 1 до 2000 случайным образом и не должно повторять число два раза. Поэтому мы можем сказать, что если у меня есть

function generateRnNumber(){ var arr = [1,2,3,4,5,6,7,8,9,10,...2000]; randomNumber = Math.floor((Math.random()*2000)); return randomNUmber;
}

Поэтому, если я вызываю generateRnNumber число от 1 до 2000, которое не возвращается ранее, или уникальный номер, поэтому, если я звоню 2000 раз, я должен получить все числа, но в случайном порядке. Я не хочу содержать массив с 2000 элементами. Пожалуйста, помогите мне написать эту функцию.

2 ответа

Вы можете перетасовать массив следующим образом:

function shuffle(o){ for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o;
};

Применение:

var myArray = [];
for(var i = 1; i <= 2000; i++) { myArray.push(i);
}
var randomArray = shuffle(myArray).splice(0, 10); // an array with 10 random numbers varrying from 1-2000

source: Как я могу перетасовать массив?


Храните массив со всеми возможными значениями и рандомизируйте заказ. Когда вам нужно случайное значение, введите массив (удалив значение "возможные значения" -array).

Чтобы сделать это в противном случае, вам все равно понадобится массив для хранения "принятых" значений, поэтому я не думаю, что вы можете обойтись, сохраняя массив размера вашего "диапазона значений".

licensed under cc by-sa 3.0 with attribution.