Heim >tägliche Programmierung >PHP-Kenntnisse >PHP-Zufallsauswahlalgorithmus (2)

PHP-Zufallsauswahlalgorithmus (2)

藏色散人
藏色散人Original
2019-02-18 15:12:178957Durchsuche

Im vorherigen Artikel „PHP Random One Algorithm (1) “ haben wir kurz die Interviewfragen des PHP Random One Algorithm vorgestellt. Als nächstes werden wir den vorherigen Inhalt weiter kombinieren, um den PHP-Algorithmus im Detail zu erläutern.

PHP-Zufallsauswahlalgorithmus (2)

Das Problem ist wie folgt:

Eine Gruppe Affen stellt sich im Kreis auf und wird nach 1, 2 nummeriert ,...,N. Dann beginnen Sie mit dem Zählen vom ersten, zählen Sie bis zum m-ten, werfen Sie es aus dem Kreis, beginnen Sie von hinten zu zählen, zählen Sie bis zum m-ten, werfen Sie es raus ... und fahren Sie auf diese Weise bis zum Ende fort Es gibt nur noch einen Affen, den man „König“ nennt. Um diesen Prozess zu simulieren, ist eine Programmierung erforderlich. Geben Sie m und n ein und geben Sie die Nummer des letzten Königs aus.

Das Lösungscodebeispiel lautet wie folgt:

<?php

function king($n, $m){
    $monkeys = range(1, $n);         //创建1到n数组
    $i=0;
    while (count($monkeys)>1) {     //循环条件为猴子数量大于1
        if(($i+1)%$m==0) {     //$i为数组下标;$i+1为猴子标号
            unset($monkeys[$i]);  //余数等于0表示正好第m个,删除,用unset删除保持下标关系
        } else {
            array_push($monkeys,$monkeys[$i]);     //如果余数不等于0,则把数组下标为$i的放最后,形成一个圆形结构
            unset($monkeys[$i]);
        }
        $i++;//$i 循环+1,不断把猴子删除,或 push到数组
    }
    return current($monkeys);  //猴子数量等于1时输出猴子标号,得出猴王
}
echo king(10,3);

Hier erstellen wir eine Methode King, der Parameter $n steht für n Affen und $m steht für das Zählen bis zum Monat Affe. Dann erstellen wir im Hauptteil der King-Methode zunächst über die Range-Funktion ein Array von 1 bis n und verwenden $monkeys, um es zu empfangen. Verwenden Sie dann eine While-Schleife, um die Elemente zu ermitteln, die die Anforderungen erfüllen.

Die Bedingung der while-Schleife ist, dass der Schleifenkörper ausgeführt wird, wenn die Anzahl der Affen $monkeys größer als 1 ist. Verwenden Sie im Schleifenkörper if...else, um zu beurteilen, ob ($i+1)%$m==0, das heißt, wenn der Rest gleich 0 ist, also der m-te Affe gezählt wird, verwenden Sie unset um dieses Element zu löschen und die tiefgestellte Beziehung beizubehalten.

Wenn der Rest ungleich 0 ist, verwenden Sie die Funktion array_push, um den Array-Index $i an letzter Stelle zu setzen und so eine kreisförmige Struktur zu bilden. Mit der Funktion array_push werden ein oder mehrere Elemente an das Ende des Arrays verschoben (push).

Führen Sie abschließend eine $i-Schleife +1 durch, löschen Sie kontinuierlich Affen oder verschieben Sie sie in das Array. Wenn die Anzahl der Affen gleich 1 ist, wird die Affenbezeichnung ausgegeben und der Affenkönig erhalten.

Dann sind in der obigen Methode die Parameter, die wir angeben, 10 und 3, und das Ausgabeergebnis ist:

4

bedeutet, dass der erhaltene Affenkönig der beschriftete Affe ist 4 .

Die Einführung dieses Artikels in den zufälligen One-Picking-Algorithmus von PHP endet hier. Im nächsten Artikel „PHPs zufälliger One-Picking-Algorithmus (3) “ stellen wir Ihnen die Verwendung von Xdebug vor um die Implementierung dieser Methode zu debuggen.

Das obige ist der detaillierte Inhalt vonPHP-Zufallsauswahlalgorithmus (2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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