Maison  >  Article  >  développement back-end  >  Comment générer des numéros uniques dans une plage spécifiée en php

Comment générer des numéros uniques dans une plage spécifiée en php

王林
王林original
2020-07-23 15:58:092370parcourir

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.

Comment générer des numéros uniques dans une plage spécifiée en php

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn