Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Random-Funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.08.2005, 19:38 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Hallo, gibt es eine Funktion, mit der ich beliebig oft eine Zufallszahl aus einer Menge generieren kann, biss diese "aufgebraucht" ist, die sich nicht widerholen?

Wenn ich also z.B. Random(0, 500) schreibe, dann will ich jedes mal eine Zahl zwischen 0 und 500 bekommen, aber nie die gleiche Zahl.

Oder ist dies bei den normalen random()-Funktionen bereits so der Fall?

P.s. Ich bin mir nicht ganz sicher, ob dass im WinAPI-Forum richtig ist, ANSI ist's aber afaik nicht...

Dieser Post wurde am 08.08.2005 um 19:39 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.08.2005, 20:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja könntest ja so machen: (nicht getestet, aber so "ungefähr")


C++:
int random()
{
  static bool test[500];
  
  int zahl = rand() % 500;
  while(test[zahl] == true)
    zahl = rand() % 500;
  
  test[zahl] = true;
  return zahl;
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.08.2005, 20:33 Uhr
Oliver
S2-Pixelgeneral


Oder guck dir mal random_shuffle an.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.08.2005, 20:33 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Ok, daran hatte ich auch schon gedacht, aber ist es in der Zeile

C++:
while(test[zahl] == true)
    zahl = rand() % 500;


nicht, rein theoretisch, möglich, dass die Schleife eine endlos-Schleife wird?

Letztendlich braucht die berechnung bei mir nähmlich immer zwischen einigen Microsekunden und fast einer viertel Minute!?

Dieser Post wurde am 08.08.2005 um 20:58 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.08.2005, 22:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oh jo, fast vergessen, du musst vorher einmal srand((unsigned)time()); aufrufen (nicht in der Funktion! nur 1x!)

und ansonsten sollte man prüfen ob nicht schon alle belegt sind. Wie gesagt, war ja nur ein beispiel.

Ansonsten kannste ja z.b ein Array mit 500 Integern anlegen, und diese dann durchmischen lassen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.08.2005, 22:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Reyx
Der Tipp von Olliver ist schon ziemlich gut... Du packst einfach alle von dir gewünschten Werte in ein Array und lässt diese dann per random_shuffle durchmischen... Dann kannst du auch nur was doppelt ziehen wenn du das was doppeltes in dein array gepackt hast...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.08.2005, 13:18 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


OK, ich schau's mir mal an, danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: