Какие есть способы создания массива:
- Создавать случайные числа, пока не наберётся сколько надо.
- Создать массив, состоящий из всех чисел интервала, выдернуть из него сколько надо случайных.
- Создать массив, состоящий из всех чисел интервала, перемешать его, взять из начала сколько надо.
Что делать при попытке создать массив с длиной больше указанного интервала:
- Кидать ошибку.
- Создавать массив с длиной меньше указанной.
Вот как-то так:
function createRandomArr(length, min, max) {
if (length > max - min + 1) {
throw 'такого массива быть не может';
}
const values = new Set;
for (; values.size < length; values.add(min + Math.random() * (max - min + 1) | 0)) ;
return [...values];
}
const createRandomArr = (length, min, max) => Array
.from({ length }, function() {
return this.splice(Math.random() * this.length | 0, 1);
}, Array.from({ length: max - min + 1 }, (n, i) => i + min))
.flat();
function createRandomArr(length, min, max) {
const arr = Array.from({ length: max - min + 1 }, (n, i) => min + i);
for (let i = arr.length; --i > 0;) {
const j = Math.random() * (i + 1) | 0;
[ arr[i], arr[j] ] = [ arr[j], arr[i] ];
}
return arr.slice(0, length);
}