Erzeuge zwei Zahlen, die in PHP NICHT gleich sind

8

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!

    
Fred Bergman 11.10.2009, 10:26
quelle

13 Antworten

21
%Vor%     
Zed 11.10.2009, 10:29
quelle
47
%Vor%     
user187291 11.10.2009 11:27
quelle
8
%Vor%

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%     
Peter Parker 11.10.2009 10:30
quelle
7
%Vor%     
overstood 11.10.2009 10:43
quelle
5
%Vor%     
Alix Axel 11.10.2009 19:22
quelle
4
%Vor%

Dies könnte der Trick sein, ohne ein Mathewiz zu sein:)

    
ChrisR 11.10.2009 11:51
quelle
2

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%     
paxdiablo 11.10.2009 11:04
quelle
1

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.

    
Daniel Rikowski 11.10.2009 10:28
quelle
1
%Vor%

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

    
KsaR 05.10.2015 07:53
quelle
0

Alix Axels Lösung war die einfachste und funktionierte für mich. Ich wollte drei zufällige Einträge von einem bestehenden Array, also habe ich

verwendet %Vor%

Und dann angezeigte Einträge, für die der Schlüssel in $rands war.

    
Amanda 17.12.2009 17:46
quelle
-1
%Vor%     
codymanix 11.10.2009 10:41
quelle
-1

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.

    
High Performance Mark 11.10.2009 10:31
quelle
-1
%Vor%

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]

, platziert     
user3475525 29.01.2014 11:39
quelle

Tags und Links