Maison  >  Article  >  développement back-end  >  Comment empêcher la génération de nombres aléatoires répétés en PHP

Comment empêcher la génération de nombres aléatoires répétés en PHP

零到壹度
零到壹度original
2018-04-10 16:52:411993parcourir

Le contenu de cet article est de partager avec vous comment éviter les nombres aléatoires répétés en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

1. la fonction intégrée implémente des nombres aléatoires non répétitifs

Condition : Pour générer un tableau, il y a 10 éléments dans ce tableau, tous sont des nombres entiers et ce sont des nombres aléatoires non répétitifs entre Numéro 1-60.
Code :

<?php   
    function get_randoms($min,$max,$num){  
       $count = 0;  
       $res = array();  
       while($count<$num){  
            $res[] = mt_random($min,$max);  
            $res = array_flip(array_flip($res));   
            $count = count($res);  
       }  
       return $res;  
    }  
$result = get_randoms(1,60,10);  
?>

Ici, $count représente le nombre de tableaux de résultats, ce qui dans la boucle while rend le nombre de tableaux de résultats inférieur au nombre cible. De cette façon, $count est obtenu sous la forme d'un tableau du nombre cible. Pendant

, dans chaque cycle, via mt_random($min,$max), une valeur comprise dans la plage est obtenue aléatoirement, stockée dans le tableau $res, puis via deux échanges clé-valeur, c'est-à-dire Grâce au caractère unique de la clé du tableau, aucune duplication n'est garantie.

2. Implémentez des nombres aléatoires non répétitifs sans utiliser de fonctions

Après avoir lu le code de cette logique, je n'ai pas pu m'empêcher de réfléchir profondément. Que feriez-vous si vous le faisiez. vous ne connaissez pas la fonction array_filp ?
Pour parler franchement, il utilise le caractère unique de la clé afin qu'il n'y ait pas de duplication de nombres aléatoires. Alors pouvons-nous simplifier ce problème ?

Exemple de code :

<?php   function get_randoms($min,$max,$num){  
   $count = 0;  
   $res = array();  
   while($count<$num){  
       $key = mt_random($min,$max);  
       $res[$key] = $key;  
       $count = count($res);  
   }  
   return $res;  
}  
$result = get_randoms(1,60,10);  
?>

Cela résout complètement ce problème grâce au caractère unique de la clé du tableau. array_flip ne sera pas utilisé du tout.
Résumé :
1. Parce que PHP fournit un grand nombre de fonctions intégrées, leur efficacité d'exécution est très élevée. Lorsque vous rencontrez un problème, essayez de l'utiliser pour résoudre le problème autant que possible. C'est pratique et rapide.

2. PHP fournit un grand nombre de fonctions intégrées et l'efficacité d'exécution est également très élevée. Cependant, même si l'efficacité est élevée, son exécution prend encore du temps.
Lorsque vous rencontrez un problème, ne le faites pas aveuglément. Vous pouvez d'abord comprendre l'essence de la solution afin de pouvoir la mettre en œuvre habilement.

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