Comment PHP génère des nombres uniques dans une plage spécifiée : générez d'abord des nombres aléatoires via la fonction mt_rand() ; puis supprimez les nombres en double via la fonction array_flip(). La fonction array_flip() est utilisée pour inverser les noms de clés dans le tableau et les valeurs de clés associées correspondantes.
Introduction à la fonction :
(Tutoriel recommandé : tutoriel php)
Fonction mt_rand() Générez des entiers aléatoires à l'aide de l'algorithme Mersenne Twister. Un entier aléatoire compris entre min (ou 0) et max (ou mt_getrandmax()), inclus. Si max < min renvoie FALSE.
Astuce : Cette fonction est un meilleur choix pour générer des valeurs aléatoires, renvoyant des résultats 4 fois plus rapidement que la fonction rand().
La fonction array_flip() est utilisée pour inverser/échanger les noms de clés dans le tableau et les valeurs de clés associées correspondantes. Si l'inversion réussit, le tableau inversé est renvoyé. Si l'inversion échoue, NULL est renvoyé.
Implémentation du code :
<?php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数,指定的范围内整数的数量必须 * 比要生成的随机数数量大 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { $count = 0; $return = array(); while ($count < $num) { $return[] = mt_rand($min, $max); $return = array_flip(array_flip($return)); $count = count($return); } //打乱数组,重新赋予数组新的下标 shuffle($return); return $return; } //生成10个1到100范围内的不重复随机数 $arr = unique_rand(1, 100, 10); echo implode($arr, ","); ?>
Résultat de l'exécution du programme :
48,5,19,36,63,72,82,77,46,16
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!