Ich muss zwei Zahlen erzeugen, die in PHP NICHT gleich sind.
Ich weiß, dass ich $random1 = (rand()%9);
verwende, um eine Zufallszahl zwischen 0-9 zu generieren. Ich muss etwas hinzufügen, denke ich.
Danke!
Auf diese Weise sind sie niemals gleich (da zu $ random1 mindestens 1 hinzugefügt wird)
Wenn beide Zahlen von 0-9 sein müssen, musst du es nur mit einer letzten Mod-Operation machen:
%Vor% Ich denke, Sie werden feststellen, dass rand()%9
Ihnen eine Zahl zwischen 0 und 8 geben wird. Wenn Sie 0 bis einschließlich 9 möchten, sollten Sie rand()%10
verwenden. Ich gehe davon aus, dass du das wolltest, aber du könntest die Antwort leicht anpassen, wenn 0 bis 8 das war, was du wirklich beabsichtigst.
Wenn Sie zwei Zahlen in diesem Bereich haben möchten, ist es am einfachsten, einen in diesem Bereich zu generieren und dann einen anderen in weniger als diesem Bereich zu generieren. Wenn er identisch oder größer ist, inkrementieren Sie ihn.
Dies ist der mathematische Weg, um es zu tun, und es ist deterministisch ( immer zwei Aufrufe an rand()
egal was). Obwohl es unwahrscheinlich ist, könnte ein echter Zufallszahlengenerator eine Reihe von Zahlen erzeugen, die alle identisch sind, was die Schleifenlösungen unklug machen würde (Sie werden wahrscheinlich einen linearen Generator verwenden, so dass dies wahrscheinlich kein Problem ist).
Beim ersten Versuch haben Sie die volle Auswahl (10 Zahlen, 0 bis 9). Auf der zweiten haben Sie den vollen Bereich abzüglich der bereits gewählten Nummer. Also, wenn Ihre erste Zahl 7 war, generieren Sie eine Zahl von 0 bis 8 und Karte 7 bis 8 und 8 bis 9:
%Vor%Wenn Sie einfach eindeutige Zahlen möchten, fangen Sie einfach bei Null an und fügen Sie +1 für jede neue Zahl hinzu.
Wenn Sie zufällige eindeutige Zahlen benötigen, speichern Sie einfach Ihre vorherigen Zahlen in einer Liste und wenn Sie eine neue benötigen, generieren Sie einfach Zufallszahlen, bis Sie eine gefunden haben, die nicht in dieser Liste.
Wenn Sie eindeutige IDs benötigen, können Sie die integrierte Funktion uniqid
verwenden.
Erklären Sie:
$r
: es ist die Nummer von 0 bis 9.
$r2
: Es geht immer von 0 bis 9, aber $r-1
oder $r+1
Zufälliger Weise generieren Sie 2 Zahlen:
%Vor%Auch wenn Sie PHP 7+ verwenden, können Sie mt_rand zu random_int
Wenn Sie Ihre Frage ziemlich stark interpretieren, sieht es so aus, als ob Sie zwei verschiedene ganze Zahlen zwischen 0 und 9 pseudozufällig generieren möchten.
Also erzeuge das erste, erzeuge ein anderes, wenn es genauso ist wie das erste Wiederholen, bis es nicht ist.
Ich behaupte ohne Rechtfertigung, dass dies genauso effizient sein wird wie jede andere Methode.
Ich habe es gelöst, indem ich das rand
in ein Array innerhalb einer for-Schleife gesetzt habe. So habe ich zwei verschiedene Zufallszahlen bekommen! Die zwei Zahlen werden in dem Array in zwei Feldern, random_numbers[0]
und random_numbers[1]