Heim > Artikel > Backend-Entwicklung > Teilen Sie 4 Möglichkeiten, sich nicht wiederholende Zufallszahlen und Arrays in PHP zu generieren
Schreiben Sie ein paar Möglichkeiten auf, um sich nicht wiederholende Zufallszahlen zu generieren. Gehen Sie einfach zum Code
Der Code lautet wie folgt:
<?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); }} ?>
Lass uns Sprechen Sie über die vierte Methode. Verwenden Sie array_flip()
, um die Schlüssel und Werte des Arrays umzudrehen. Zu diesem Zeitpunkt werden die doppelten Schlüssel genauso umgedreht Entfernen der doppelten Werte.
Die oben genannten Methoden sind nur einfache Beispiele und einige Methoden haben einen begrenzten Anwendungsbereich.
Betrachtung der Effizienz mehrerer Methoden:
Verwenden Sie array_unique()
, um die Leistung zu vergleichen, wenn das Array groß ist Schlimm, natürlich wird shuffle()
auch davon betroffen sein.
Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung
Das obige ist der detaillierte Inhalt vonTeilen Sie 4 Möglichkeiten, sich nicht wiederholende Zufallszahlen und Arrays in PHP zu generieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!