Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
1 2 3 4 5 6 7 |
for(int i = 0; i < 10; ++i) { int r = rand() % 10; int tmp = a[0]; a[0] = a[r]; a[r] = tmp; } |
Zitat von »"Jonathan_Klein"«
Alternativ kann man auch ein zufälliges Element von 1-n entfernen, da muss man dann nie darauf achten, ob man die zahl schon hatte oder nicht.
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
array<int> a; for(i = 0; i < num; ++i) a.append(i); int length = num; int get_rand(void) { int at = rand() % length; int r = a[at]; swap(a[at], length); length--; return r; } |
Zitat von »"the[V«
oid"]Ist doch dasselbe, ob man nun einen Container erstellt, diesen mit Zahlen füllt, und diese nach und nach (zufällig) rauspickt, oder ob man Zufallszahlen generiert, und nur solche akzeptiert, die noch nicht akzeptiert wurden O.o
Zitat von »"Das_Kleine_C++;"«
Übrigens, der grund warum's bei mir nicht geklappt hat ist zum verrückt werden, hatte vergessen den Zufallsgenerator einzuschalten *peinlich*
Nein. Wie gesagt macht das einen gewaltigen Unterschied in der Zeitkomplexität, der sich bei grösseren Mengen schnell verheerend auswirken kann.Zitat von »"the[V«
oid"]Ist doch dasselbe, ob man nun einen Container erstellt, diesen mit Zahlen füllt, und diese nach und nach (zufällig) rauspickt, oder ob man Zufallszahlen generiert, und nur solche akzeptiert, die noch nicht akzeptiert wurden O.o
Werbeanzeige