Для реализации генерации пар чисел без повторений в JavaScript можно использовать различные подходы. Вот несколько вариантов:
1. Массив с исключением:
- Создайте пустой массив для хранения сгенерированных пар чисел.
- Запустите цикл, который будет генерировать новую пару чисел на каждой итерации.
- Внутри цикла сгенерируйте новую пару чисел и проверьте, нет ли уже такой пары в массиве.
- Если есть, продолжайте генерацию новых пар чисел до тех пор, пока не будет найдена уникальная пара.
- Если пара чисел уникальна, добавьте ее в массив.
- Повторяйте цикл до тех пор, пока массив не будет содержать все нужные пары чисел.
Пример реализации:
function generatePairs(min, max, count) { const pairs = []; while (pairs.length < count) { const a = Math.floor(Math.random() * (max - min + 1)) + min; const b = Math.floor(Math.random() * (max - min + 1)) + min; const pair = [a, b]; if (!pairs.some(existingPair => existingPair[0] === pair[0] && existingPair[1] === pair[1])) { pairs.push(pair); } } return pairs; } const pairs = generatePairs(1, 10, 5); console.log(pairs);
В данном примере функция generatePairs
генерирует 5 уникальных пар чисел от 1 до 10.
2. Перемешивание:
- Создайте массив, содержащий все числа, из которых нужно сгенерировать пары.
- Используя алгоритм случайного доступа (например, Fisher–Yates shuffle), перемешайте массив.
- Возьмите первые два числа из перемешанного массива и создайте пару.
- Повторяйте шаг 3 до тех пор, пока не будут сгенерированы все нужные пары.
Пример реализации:
function generatePairs(min, max, count) { const numbers = Array.from({ length: max - min + 1 }, (_, i) => i + min); const shuffled = shuffle(numbers); const pairs = []; for (let i = 0; i < count; i++) { const pair = [shuffled[i * 2], shuffled[i * 2 + 1]]; pairs.push(pair); } return pairs; } function shuffle(array) { let currentIndex = array.length, temporaryValue, randomIndex; while (currentIndex !== 0) { randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1; temporaryValue = array[currentIndex]; array[currentIndex] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; } const pairs = generatePairs(1, 10, 5); console.log(pairs);
В этом примере функция generatePairs
генерирует 5 случайных уникальных пар чисел от 1 до 10, используя алгоритм перемешивания.
Оба этих подхода позволяют сгенерировать уникальные пары чисел без повторений в заданном диапазоне. Выбирайте тот, который больше подходит для ваших потребностей и требований.