2 verschiedene Zufallszahlen erzeugen
-
C++Developer2000 schrieb:
Ich hätte mir eine Realisierung mithilfe von if-Abfragen vorgestellt.
Hätte jemand einen Lösungsansatz.Du hast doch selber gerade einen genannt.

-
hanstroll123 schrieb:
(Triviale Aufgabe aber) was hast du denn schon bis jetzt?
Danke für die schnelle Antwort
Das hier:
Aber irgendwie funktioniert es nicht.
srand (time(NULL));
int zahl;
int zahl2;
zahl = rand() % 100;
zahl2= rand()%100;
if(zahl==zahl2)
{
do{
zahl= rand() % 100;
zahl2= rand() % 100;}while(zahl==zahl2);
}
-
Was heißt denn "irgendwie funktioniert es nicht" genau?
-
Das Ergebnis sind sehr häufig 2 gleiche Zahlen.
-
Schau dir noch mal die while Schleife an...
}while(zahl==zahl2); //solange bis zahl genau das gleiche ist wie zahl2 }while(zahl!=zahl2); //solange bis zahl etwas anderes ist wie zahl2
-
C++Developer2000 schrieb:
Das Ergebnis sind sehr häufig 2 gleiche Zahlen.
Das kann nicht sein. Die Schleife wird betreten, wenn die Zahlen gleich sind, und sie läuft solange sie gleich sind.
Es wäre übrigens bedeutend einfacher, nur die zweite Zahl neu zu würfeln anstatt immer wieder alle beide.
dasmitleid schrieb:
}while(zahl==zahl2); //solange bis zahl genau das gleiche ist wie zahl2 }while(zahl!=zahl2); //solange bis zahl etwas anderes ist wie zahl2Es ist genau andersrum.
-
Mit nur 2 Zahlen könnte es auch direkter gehen, wenn ich mich nicht irre.
int a=rand()%100; int b=rand()%99; if(b>=a) ++b;
-
warum erhöhst du b um eins wenn es schon größer ist als a?
Zudem befürchte ich das da der Zufall weniger zufällig wird.
-
Dudeldu schrieb:
warum erhöhst du b um eins wenn es schon größer ist als a?
Zudem befürchte ich das da der Zufall weniger zufällig wird.Und Deine Befürchtung beruht auf welcher Überlegung?
Bzw. welche Gedanken hast Du Dir dazu gemacht? Mal einen Entscheidungsbaum aufgezeichnet? Irgendwas?
-
a wird gleichverteilt aus {0, ..., 99} ausgewählt, b gleichverteilt aus {0, ..., 99} \ {a}.
-
Dudeldu schrieb:
warum erhöhst du b um eins wenn es schon größer ist als a?
Zudem befürchte ich das da der Zufall weniger zufällig wird.nicht "größer" sondern "größer oder gleich".
Vielleicht magste dieses Verfahren mehr?
int a=rand()%100; int b=rand()%99; if(b==a) b=99;