Generieren Sie eine PHP-Darstellung sich nicht wiederholender Zufallszahlen.

巴扎黑
Freigeben: 2016-11-12 10:52:13
Original
945 Leute haben es durchsucht

Prämisse:

Heute habe ich einen Beitrag gesehen, in dem jemand ein Array generieren wollte. Es gibt 10 Elemente in diesem Array, alle sind Ganzzahlen und es sind sich nicht wiederholende Zufallszahlen zwischen 1 und 60.

Natürlich ist diese Frage nicht schwierig! Unten finden Sie die Antwort aus der Forumsantwort.

Code:

PHP-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);  
?>
Nach dem Login kopieren



Hier verwendet er $count, um die Anzahl der Arrays zu ermitteln, und er ist dabei Die While-Schleife macht die Anzahl der Ergebnisarrays kleiner als die Zielanzahl. Auf diese Weise wird $count als Array der Zielzahl erhalten.
Während jedes Zyklus wird durch mt_random($min,$max) ein Wert innerhalb des Bereichs zufällig abgerufen und im Array $res gespeichert, und dann durch zwei Schlüssel-Wert-Austausche, also durch den Array-Schlüssel Uniqueness stellt sicher, dass es nicht zu Duplikaten kommt.

Nachdem ich den Code dieser Logik gelesen hatte, musste ich tief nachdenken. Was würden Sie tun, wenn Sie die Funktion array_filp nicht kennen würden?
Um es ganz klar auszudrücken: Es nutzt die Einzigartigkeit des Schlüssels, sodass es nicht zu einer Duplizierung von Zufallszahlen kommt. Können wir dieses Problem also vereinfachen?

Code:

PHP-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);  
 ?>
Nach dem Login kopieren



Auf diese Weise haben wir es vollständig durch die Einzigartigkeit des Array-Schlüssels gelöst Diese Frage. Array_flip wird überhaupt nicht verwendet.

Durch das oben Gesagte habe ich zwei Punkte vorgebracht.

1: Da PHP uns eine große Anzahl integrierter Funktionen bietet, ist ihre Ausführungseffizienz sehr hoch. Wenn wir auf ein Problem stoßen, versuchen wir unser Bestes, es zur Lösung des Problems zu nutzen. Das ist bequem und schnell. Deshalb arbeiten und lernen wir in unserer täglichen Arbeit, sammeln so viele PHP-Funktionen wie möglich und verstehen sie tiefgreifend.

2: Obwohl PHP uns eine große Anzahl integrierter Funktionen bietet und die Ausführungseffizienz ebenfalls sehr hoch ist, möchte ich darauf hinweisen, dass die Ausführung zwar hoch ist, aber dennoch Zeit in Anspruch nimmt. Wenn wir auf ein Problem stoßen, sollten wir es nicht blindlings tun. Wir können zunächst die Essenz der Lösung verstehen, um sie geschickt umsetzen zu können.


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage