Изучение нескольких методов генерации случайных уникальных чисел в JavaScript

В мире веб-разработки генерация случайных уникальных чисел — обычная задача. Независимо от того, создаете ли вы игру, создаете уникальный идентификатор или реализуете безопасную систему, крайне важно иметь надежные методы генерации случайных уникальных чисел в JavaScript. В этой статье мы рассмотрим различные подходы, используя разговорный язык, и приведем примеры кода, чтобы дать вам полное представление о различных доступных методах.

Метод 1: Math.random() с проверкой массива
Один из самых простых способов генерации случайных чисел в JavaScript — использование функции Math.random(). Однако для обеспечения уникальности нам необходимо отслеживать сгенерированные числа. Мы можем добиться этого, используя массив для хранения сгенерированных значений и проверяя их перед принятием нового числа.

const generatedNumbers = [];
function generateUniqueRandomNumber() {
  let randomNumber;
  do {
    randomNumber = Math.floor(Math.random() * 100) + 1;
  } while (generatedNumbers.includes(randomNumber));
  generatedNumbers.push(randomNumber);
  return randomNumber;
}

Метод 2: использование набора.
Другой метод генерации случайных уникальных чисел — использование встроенной структуры данных SetJavaScript. Setхранит только уникальные значения, что делает его идеальным для наших целей.

const generatedNumbers = new Set();
function generateUniqueRandomNumber() {
  let randomNumber;
  do {
    randomNumber = Math.floor(Math.random() * 100) + 1;
  } while (generatedNumbers.has(randomNumber));
  generatedNumbers.add(randomNumber);
  return randomNumber;
}

Метод 3: алгоритм перемешивания Фишера-Йейтса
Алгоритм Фишера-Йейтса обычно используется для перетасовки массивов, но его также можно использовать для генерации случайных уникальных чисел. Этот алгоритм гарантирует, что каждое число в диапазоне выбирается только один раз.

function generateUniqueRandomNumber() {
  const numbers = Array.from({ length: 100 }, (_, index) => index + 1);
  let currentIndex = numbers.length;
  while (currentIndex !== 0) {
    const randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;
    [numbers[currentIndex], numbers[randomIndex]] = [numbers[randomIndex], numbers[currentIndex]];
  }
  return numbers[currentIndex];
}

В этой статье мы рассмотрели три метода генерации случайных уникальных чисел в JavaScript. Используя функцию Math.random() с проверкой массива, используя структуру данных Set или реализуя алгоритм перемешивания Фишера-Йейтса, вы можете гарантировать, что генерируемые числа являются случайными и уникальными. В зависимости от вашего конкретного случая использования вы можете выбрать наиболее подходящий метод. Приятного кодирования!