/**
* Generate a specified number of unique random numbers
* from the range 1..$maxNumber.
*
* @param int $count Number of values to generate.
* @param int $maxNumber Maximum value in the range.
*
* @return array<int>
*
* @throws InvalidArgumentException
*/
function generateRandomNumbers(int $count, int $maxNumber): array
{
if ($count < 1) {
throw new InvalidArgumentException(
'Count must be greater than zero.'
);
}
if ($count > $maxNumber) {
throw new InvalidArgumentException(
'Count cannot be greater than maxNumber.'
);
}
// Create an array: [1, 2, 3, ..., $maxNumber]
$numbers = range(1, $maxNumber);
// Randomly shuffle the array
shuffle($numbers);
// Return the first $count values
return array_slice($numbers, 0, $count);
}
// Example usage
try {
$numbers = generateRandomNumbers(7, 33);
// Optional
sort($numbers);
echo 'Random numbers: ' . implode(', ', $numbers) . PHP_EOL;
} catch (InvalidArgumentException $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
}
/*
run:
Random numbers: 2, 7, 10, 11, 24, 25, 32
*/