Wie stellt man in PHP eindeutige Zufallszahlen ohne Wiederholungen sicher?

Barbara Streisand
Freigeben: 2024-10-21 11:58:02
Original
872 Leute haben es durchsucht

How to Ensure Unique Random Numbers Without Repeats in PHP?

Zufallszahlen ohne Wiederholungen generieren

Ihre aktuelle Methode zum Generieren zufälliger Yelp-Einträge mithilfe der Funktion rand() gewährleistet keine eindeutigen Einträge. Um Duplikate zu vermeiden, sollten Sie die Implementierung einer intelligenteren Randomisierungsstrategie in Betracht ziehen.

Ein Ansatz besteht darin, die native shuffle()-Funktion für einen Zahlenbereich zu verwenden, der die Auflistungsindizes darstellt. Dadurch wird ein gemischtes Array ohne Duplikate generiert:

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

Eine alternative Methode besteht darin, eine benutzerdefinierte Funktion randomGen() zu erstellen, die Parameter für die minimale, maximale und gewünschte Menge an Zufallszahlen akzeptiert:

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

Um dies in Ihrem PHP-Skript zu implementieren, generieren Sie mit randomGen() eine zufällige Listing-ID und speichern Sie sie in einer Datenbanktabelle. Überprüfen Sie bei jeder Seitenaktualisierung, ob die generierte Listing-ID mit dem gespeicherten Wert übereinstimmt. Wenn nicht, zeigen Sie diesen Eintrag an und aktualisieren Sie die Tabelle mit der neuen ID.

Dieser Ansatz stellt sicher, dass alle 20 Einträge einmal angezeigt werden, bevor es zu Wiederholungen kommt. Hier ist ein aktualisierter Codeausschnitt:

<code class="php"><?php

$businesses = json_decode($data);

$db = new PDO('mysql:host=localhost;dbname=yelp_listings', 'root', 'password');

// Generate a random listing ID using randomGen()
$listing_id = randomGen(1, 20, 1)[0];

// Check if the listing ID matches the stored value
$stmt = $db->prepare('SELECT listing_id FROM shown_listings WHERE id = ?');
$stmt->execute([$listing_id]);

// Display the listing if it hasn't been shown yet
if ($stmt->rowCount() == 0) {
    $business = $businesses->businesses[$listing_id - 1];

    echo "<img border=0 src='" . $business->image_url . "'><br/>";
    echo $business->name . "<br/>";
    echo "<img border=0 src='" . $business->rating_img_url_large . "'><br/>";

    // Add the listing ID to the shown_listings table
    $stmt = $db->prepare('INSERT INTO shown_listings (id) VALUES (?)');
    $stmt->execute([$listing_id]);
}

?></code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie stellt man in PHP eindeutige Zufallszahlen ohne Wiederholungen sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage