keine doppelten Zufallszahlen
-
Moin moin !
Ich habe eine Funktion die mir eine Zufallszahl generiert. So weit, so gut.
int zufall (int size) { return (rand () % size); }
da ich aber per Schleife mehrere Zzahlen zurueckgeben moechte, benutze ich eine for Schleife.
Das sieht dann so aus:int main() { srand ((unsigned) time (0)); for(x=0; x<=10; x++) { printf(zufall(10)); } }
So, das Problem ist nun, das oft die gleichen Zahlen generiert werden. Wie kann ich es jetzt anstellen, das das nicht passiert ? Eine Funktion basteln die ueberprueft ob die Zahl bereits generiert worden ist, aber wie ?
Ich danke fuer jeden Tip.
-- herby
-
so ähnlich könnte es klappen.
bool schonda[10]={false}; for(x=0; x<=10; x++) { nochmal: int z=zufall(10); if(schonda[z]) goto nochmal; schonda[z]=true; printf("%d\n",z); }
[ Dieser Beitrag wurde am 15.11.2002 um 11:42 Uhr von volkard editiert. ]
-
Original erstellt von <herby>:
**Eine Funktion basteln die ueberprueft ob die Zahl bereits generiert worden ist, aber wie ?
**Die Zufallszahlen in ein Array speichern und dann einfach die neue Zufallszahl mit allen bisherigen vergleichen...
achja:
printf(zufall(10))
kann nicht gehen!printf erwartet als 1. Parameter einen Formatstring:
printf("%d",zufall(10));
-
Hi, danke fuer die schnelle Antwort !
Das mit dem printf war ein Fluechtigkeitsfehler *g*
Danke,
herby
-
Das Problem der doppelten Zufallszahlen hatten wir schon ein paar mal: http://www.ts-networld.de/progc/rangerand.shtml