Maison > Article > développement back-end > Partagez 4 façons de générer des nombres et des tableaux aléatoires non répétitifs en PHP
Écrivez quelques façons de générer des nombres aléatoires non répétitifs, allez simplement dans le code
Le code est le suivant :
<?phpdefine('RANDOM_MAX', 100);define('COUNT', 10); echo 'max random num: '.RANDOM_MAX, ' ;result count:'.COUNT, '<br/>'; invoke_entry('rand1');invoke_entry('rand2');invoke_entry('rand3');invoke_entry('rand4'); function invoke_entry($func_name) { $time = new time(); $time->time_start(); call_user_func($func_name); echo $func_name.' time spend: ', $time->time_spend(); echo '<br/>';}function rand1() { $numbers = range (1, RANDOM_MAX); shuffle($numbers); //随机打乱数组 $result = array_slice($numbers, 1, COUNT); return $result;}function rand2() { $result = array(); while(count($result)< COUNT) { $result[] = mt_rand(1, RANDOM_MAX); //mt_rand()是比rand()更好更快的随机函数 $result = array_unique($result); //删除数组中重复的元素 } return $result;}function rand3() { $result = array(); while(count($result) < COUNT) { $_tmp = mt_rand(1, RANDOM_MAX); if(!in_array($_tmp, $result)) { //当数组中不存在相同的元素时,才允许插入 $result[] = $_tmp; } } return $result;}function rand4() { $result = array(); while (count($result) < COUNT) { $result[] = mt_rand(1, RANDOM_MAX); $result = array_flip(array_flip($result)); //array_flip将数组的key和value交换 } return $result;}class time { private $_start; public function time_start() { $this->_start = $this->microtime_float(); } public function time_spend() { return $this->microtime_float() - $this->_start; } private function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); }} ?>
Allons Parlons de la quatrième méthode, c'est la méthode flip. Utilisez array_flip()
pour retourner les clés et les valeurs du tableau. En utilisant la fonction de tableau PHP, les clés en double seront écrasées. À ce stade, le retournement est le même. supprimer les valeurs en double.
Les méthodes ci-dessus ne sont que des exemples simples, et certaines méthodes ont un champ d'application limité.
Examen de l'efficacité de plusieurs méthodes :
Utilisez array_unique()
pour comparer les performances lorsque la baie est grande Le mauvais, bien sûr, shuffle()
sera également affecté par cela.
Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise
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!