What are the best practices for generating random numbers in PHP to avoid duplicates and ensure randomness?

Generating random numbers in PHP can sometimes lead to duplicates, especially when generating a large number of random values. To avoid duplicates and ensure randomness, a common practice is to use an array to keep track of generated numbers and check against it before generating a new number. Additionally, using the `shuffle()` function on an array of numbers can help ensure randomness in the sequence of generated values.

$generatedNumbers = [];
$min = 1;
$max = 100;
$numRandomNumbers = 10;

for ($i = 0; $i < $numRandomNumbers; $i++) {
    do {
        $randomNumber = mt_rand($min, $max);
    } while (in_array($randomNumber, $generatedNumbers));

    $generatedNumbers[] = $randomNumber;
}

shuffle($generatedNumbers);

print_r($generatedNumbers);