Maison  >  Article  >  développement back-end  >  PHP génère N exemple de code de nombres aléatoires non répétitifs

PHP génère N exemple de code de nombres aléatoires non répétitifs

怪我咯
怪我咯original
2017-07-11 11:37:491100parcourir

Cet article décrit principalement comment utiliser PHP pour générer N instances de nombres aléatoires non répétitivesLe code est le suivant :

<?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;
}
$arr = unique_rand(1, 25, 16);
sort($arr);
$result = &#39;&#39;;
for($i=0; $i < count($arr);$i++)
{
 $result .= $arr[$i].&#39;,&#39;;
}
$result = substr($result, 0, -1);
echo $result;
?>

Le programme s'exécute comme suit :

Le code est le suivant :

2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24
Quelques notes supplémentaires :

La fonction mt_rand() est utilisée pour générer des nombres aléatoires. Cette fonction génère des nombres aléatoires quatre fois plus rapidement en moyenne que rand().
La "méthode flip" est utilisée pour supprimer les valeurs en double dans le
tableau, qui consiste à utiliser array_flip() pour échanger deux fois la clé et la valeur du tableau. Cette approche est beaucoup plus rapide que l'utilisation de array_unique(). Avant de renvoyer le tableau, utilisez d'abord shuffle() pour attribuer de nouveaux noms de clés au tableau, en vous assurant que les noms de clés sont des nombres consécutifs de 0 à n. Si cette étape n'est pas effectuée, les noms de clés peuvent devenir discontinus lorsque
supprime les valeurs en double, provoquant des problèmes de parcours.

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