Как получать случайные уникальные числа из заданного интервала?
Создать массив, выдёргивать случайный элемент:

function makeRandomizer([ min, max ]) {
  const numbers = [...Array(max - min + 1).keys()];
  return () => numbers.length
    ? min + numbers.splice(Math.random() * numbers.length | 0, 1)[0]
    : null;
}
Создать массив, перемешать его, доставать последний элемент:

function makeRandomizer([ min, max ]) {
  const numbers = Array.from(
    { length: max - min + 1 },
    (n, i) => min + i
  );

  for (let i = numbers.length; --i > 0; ) {
    const j = Math.random() * (i + 1) | 0;
    [ numbers[i], numbers[j] ] = [ numbers[j], numbers[i] ];
  }

  return () => numbers.pop() ?? null;
}
function makeRandomizer([ min, max ]) {
  // сортировка может занять несколько больше времени чем обычно.
  const numbers = [...Array(max - min + 1)].map((n, i) => min + i).sort(()=>Math.random()<0.5?-1:1);
  return () => numbers.shift() ?? null;
}