Перемешайте числа от 0 до 1000 алгоритмом Fisher–Yates, возьмите первые 25 и разбейте их на пять строк: повторы невозможны.
Заполните матрицу 5×5 уникальными случайными целыми числами от 0 до 1000.
Перемешайте числа от 0 до 1000 алгоритмом Fisher–Yates, возьмите первые 25 и разбейте их на пять строк: повторы невозможны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Перемешайте числа от 0 до 1000 алгоритмом Fisher–Yates, возьмите первые 25 и разбейте их на пять строк: повторы невозможны.
Диапазон здесь включительный, всего 1001 число:
function randomMatrix() {
const pool = Array.from({ length: 1001 }, (_, i) => i);
for (let i = pool.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[pool[i], pool[j]] = [pool[j], pool[i]];
}
return Array.from({ length: 5 }, (_, row) =>
pool.slice(row * 5, row * 5 + 5));
}
Math.random подходит для учебной задачи, но не для криптографии. Сложность перемешивания O(1001).