Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Simple Frage zu (s)rand

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
09.07.2006, 13:13 Uhr
Oliver
S2-Pixelgeneral


Kann ich mich darauf verlassen, dass, wenn srand immer mit dem gleichen Wert initialisiert wird, überall in der gleichen Reihenfolge die gleichen Zahlen von rand geliefert werden? D.h, ist das auf allen System einheitlich?
Ist für das Netzwerkspiel wichtig, dass überall die gleichen "Zufälle" passieren.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.07.2006, 13:53 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


probiers aus?


C++:
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
  srand(atoi(argv[1]));

  for(unsigned int i = 0; i < 1000; ++i)
  {
     printf("%d\n", rand() % 1000);
  }
}



machste dann z.b


Code:

./prog 1053453 > fileA
./prog 1053453 > fileB
diff fileA fileB




Wenn beide übereinstimmen, dann funktioniert das


Bearbeitung:

bei mir kommt das selbe raus


--
class God : public ChuckNorris { };

Dieser Post wurde am 09.07.2006 um 14:21 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.07.2006, 14:17 Uhr
Pler
Einer von Vielen
(Operator)


Also ich habe mal gelesen, dass srand auf verschiedenen Systemen verschieden realisiert ist.
Wenn du als zwei mal das gleiche Linux hast wird wohl auch das gleiche rauskommen. Aber auf anderen Systemen könnten dann ja was anderes rauskommen..
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.07.2006, 14:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hmm stimmt, dann müsste man am besten eine eigene implementation benutzen, damits überall wirklich gleich ist
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.07.2006, 17:50 Uhr
Hans
Library Walker
(Operator)


Hi,
wie bei der "Diskussion" oben schon heraus kam, ist es am besten, sich für diesen Fall eine eigene rand()-Funktion zu bauen. Zum Beispiel so, wie die hier:

C++:
zuf(int a, int b)
{
  static int Z=30000;

  Z = (Z*997+1) & 32767;
  return (Z/32768. * (a-b+1)+a);
}


die einem Zufallszahlen zwischen a und b liefert. Die ist für 32-Bit-Systeme ausgelegt, sollte sich aber auch auf 64-Bitsysteme erweitern lassen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: