How to generate N random integers, each with distinct digits and exact length L in TypeScript

1 Answer

0 votes
/**
 * Generate N random integers, each with distinct digits and exact length L.
 * Example: L = 4 → numbers like 3816, 5072 (no repeated digits).
 */
export function generateDistinctDigitNumbers(N: number, L: number): number[] {
  if (L > 10) {
    throw new Error("Length L cannot exceed 10 because digits 0–9 must be distinct.");
  }

  // Use a Set<number> to ensure all generated numbers are unique
  const results: Set<number> = new Set<number>();

  while (results.size < N) {
    // Store digits as an array of strings
    const digits: string[] = [];

    // Build a number of length L
    while (digits.length < L) {
      const d: string = Math.floor(Math.random() * 10).toString();

      // Only add digit if not already used
      if (!digits.includes(d)) {
        digits.push(d);
      }
    }

    // Prevent numbers like "0123"
    if (digits[0] === "0") {
      continue;
    }

    const num: number = parseInt(digits.join(""), 10);
    results.add(num);
  }

  return Array.from(results);
}


const nums: number[] = generateDistinctDigitNumbers(10, 6);
console.log(nums);



/*
run:

[
  872419, 467809,
  158402, 510682,
  107354, 970581,
  510872, 491806,
  106572, 293416
]

*/

 



answered Jul 16 by avibootz

Related questions

...