Heim >Backend-Entwicklung >PHP-Tutorial >Wie generiert man Zufallszahlen ohne Wiederholung für einen umfassenden Listing-Randomizer?

Wie generiert man Zufallszahlen ohne Wiederholung für einen umfassenden Listing-Randomizer?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-21 11:49:31832Durchsuche

How to Generate Random Numbers without Repetition for a Comprehensive Listing Randomizer?

Zufallszahlen ohne Wiederholung generieren: Ein umfassender Leitfaden

Bei Ihrem Bestreben, eine Website zu entwickeln, die Yelp-Einträge zufällig anordnet, suchen Sie nach einer Methode, die... stellt sicher, dass alle 20 Einträge einmal angezeigt werden, bevor es zu Wiederholungen kommt. Lassen Sie uns eine Reihe von Ansätzen erkunden, um dieser Herausforderung zu begegnen.

Rand(0, 19)-Ansatz von PHP

Ihre aktuelle Implementierung verwendet PHPs rand(0, 19) zum Generieren ein zufälliger Index zur Auswahl eines Yelp-Eintrags. Allerdings hat diese Methode eine Einschränkung: Sie kann Zahlen wiederholen. Um dies zu überwinden, benötigen wir einen ausgefeilteren Ansatz.

Mischen eines Zahlenbereichs

Eine effektive Lösung besteht darin, einen Zahlenbereich zu mischen, der die Listungsindizes darstellt. Dies kann mit range() und shuffle() wie folgt erreicht werden:

<code class="php">$numbers = range(0, 19);
shuffle($numbers);</code>

Dadurch wird ein Array mit Zahlen von 0 bis 19 in zufälliger Reihenfolge erstellt.

Alternative Lösung mit randomGen()-Funktion

Ein anderer Ansatz besteht darin, eine benutzerdefinierte randomGen()-Funktion zu verwenden, die ein Minimum, ein Maximum und eine Menge als Parameter akzeptiert. Es generiert eine Liste eindeutiger Zufallszahlen innerhalb des angegebenen Bereichs:

<code class="php">function randomGen($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}

print_r(randomGen(0, 20, 20));  // generates 20 unique random numbers</code>

Speichern verwendeter Nummern und Aktualisieren in einer Datenbank

Um sicherzustellen, dass alle Einträge ohne angezeigt werden Wiederholung können Sie die angezeigten Einträge in einer Datenbank speichern. Überprüfen Sie jedes Mal, wenn Sie eine zufällige Auflistung anzeigen, ob ihre ID mit einer in der Datenbank übereinstimmt. Wenn nicht, zeigen Sie den Eintrag an und fügen Sie seine ID zur Datenbank hinzu. Wiederholen Sie diesen Vorgang, bis alle Einträge angezeigt wurden.

Diese Methode stellt sicher, dass jeder Eintrag genau einmal angezeigt wird, bevor es zu einer Wiederholung kommt.

Das obige ist der detaillierte Inhalt vonWie generiert man Zufallszahlen ohne Wiederholung für einen umfassenden Listing-Randomizer?. 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