Générer des nombres aléatoires uniques dans une plage
Générer une liste de nombres aléatoires uniques dans une plage spécifiée peut être une tâche difficile. Une approche consiste à générer des nombres aléatoires et à vérifier s’ils sont uniques à chaque fois. Cependant, cette méthode peut s'avérer inefficace pour les grandes plages ou un grand nombre de nombres aléatoires.
Une approche plus optimisée consiste à créer un tableau de nombres dans la plage souhaitée, puis à mélanger le tableau pour rendre l'ordre aléatoire. Le tableau résultant contiendra des nombres aléatoires uniques dans la plage spécifiée.
Utilisation d'un tableau avec une plage de nombres dans un ordre aléatoire :
$numbers = range(1, 20); shuffle($numbers);
Dans ce code, plage (1, 20) crée un tableau de nombres de 1 à 20. La fonction shuffle() rend ensuite aléatoire l'ordre des nombres dans le tableau. Cette méthode est particulièrement utile lorsque le nombre de nombres aléatoires nécessaires est inférieur ou égal à la plage de nombres.
Utilisation d'une fonction enveloppée :
Pour des scénarios plus complexes , vous pouvez créer une fonction encapsulée qui prend en entrée la valeur minimale, la valeur maximale et la quantité souhaitée de nombres aléatoires :
function UniqueRandomNumbersWithinRange($min, $max, $quantity) { $numbers = range($min, $max); shuffle($numbers); return array_slice($numbers, 0, $quantity); }
Cette fonction prend la plage initiale de nombres, les mélange, puis utilise array_slice() pour extraire le nombre souhaité de nombres aléatoires.
Exemple d'utilisation :
Le code suivant montre comment utiliser le UniqueRandomNumbersWithinRange() fonction :
<?php print_r(UniqueRandomNumbersWithinRange(0, 25, 5)); ?>
Résultat :
Array ( [0] => 14 [1] => 16 [2] => 17 [3] => 20 [4] => 1 )
Ce code génère un tableau de 5 nombres aléatoires uniques entre 0 et 25. Les nombres sont mélangés pour garantir l'unicité .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!