/**
* Generates a specified number of unique random numbers
* from the range 1..maxNumber.
*
* @param {number} count - Number of values to generate.
* @param {number} maxNumber - Maximum value in the range.
* @returns {number[]} Array of unique random numbers.
*/
function generateRandomNumbers(count, maxNumber) {
if (count < 1) {
throw new Error("count must be greater than 0");
}
if (count > maxNumber) {
throw new Error("count cannot be greater than maxNumber");
}
// Create array: [1, 2, 3, ..., maxNumber]
const numbers = Array.from(
{ length: maxNumber },
(_, i) => i + 1
);
// Fisher-Yates shuffle
for (let i = numbers.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
// Swap elements
[numbers[i], numbers[j]] = [numbers[j], numbers[i]];
}
// Return the first 'count' numbers
return numbers.slice(0, count);
}
// Example usage
const picks = generateRandomNumbers(7, 33);
// Optional
picks.sort((a, b) => a - b);
console.log("Random numbers:", picks);
/*
run:
Random numbers: [
2, 6, 9, 15,
26, 27, 30
]
*/