/**
* 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
]
*/