Mehrmals die gleiche Zahl vermeiden
-
Hallo, also ich hab da n kleines prob (mein Letztes, juhu)
ich müsste vermeiden das bei der initialisiereungint int_random1 = 1+(rand()%8); int int_random2 = 1+(rand()%8); int int_random3 = 1+(rand()%8); int int_random4 = 1+(rand()%8);
eine Zahl mehrmals vorkommt, also dürfte jede Zahl nur einmal vorkommen, weiss jemand was man da machen kann?
-
1. mach aus den 4 zahlen n array
2. schreib ne funktion die prüft ob der wert an nem bestimmten index ein zweites mal vorkommtden rest darfst du dir selber ausdenken... is ned so schwer aber ne gute übung
viel spaß
-
Entweder überprüfen ob die Zahl bereits gezogen wurde un dann nochmal ziehen oder ein Array anlegen und das dann mit aufsteigenden Werten gefüllt wird. Somit ist sichergestellt, dass jede Zahl nur einmal vorkommt. So nun wählst du jeweis einen zufälligen Wert aus dem Array und löschst ihn.
-
#include <algorithm> // ... int zahlen[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; std::random_shuffle(zahlen, zahlen + 8); int int_random1 = zahlen[1]; int int_random2 = zahlen[2]; int int_random3 = zahlen[3]; int int_random4 = zahlen[4];
-
mal was ausprobieren...
int int_random1 = 1+(rand()%8); l1: int int_random2 = 1+(rand()%8); if(int_random2==int_random1) goto l1; l2: int int_random3 = 1+(rand()%8); if(int_random3==int_random1 or int_random3==int_random2) goto l2; l3: int int_random4 = 1+(rand()%8); if(int_random4==int_random1 or int_random4==int_random2 or int_random4==int_random3) goto l3;
scnr
-
AAAAAAAAAAAAAAAAAAAAAAAAAAARGH!
-
0xdeadbeef schrieb:
#include <algorithm> // ...
na wenn schon standard lib, warum nicht gleich richtig?
#include <set> set<int> IntSet; while(IntSet.size()<4) IntSet.insert(1+rand()%8); set<int>::iterator Iter=IntSet.begin(); int int_random1=*Iter; int int_random2=*++Iter; int int_random3=*++Iter; int int_random4=*++Iter;
-
Aller Vermutlichkeit nach wird std::set deutlich langsamer sein als std::random_shuffle. Ich habs aber jetzt nicht gebenchmarkt, also...
-
wow thx a lot leute, das muss ich heute mittag sofort implentieren, heute ist abgabetermin aber das sollte noch gehn ^^