001
13.05.2005, 16:41 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat von ~_radix: |
Hi,
ist die zufällige Zalenfolge, die rand() beim gleichen srand()-Wert liefert, auf allen Rechnern die gleiche?
|
Im allgemeinen nicht:
Wie der Seed wert verarbeitet wird, hängt von der Implementation deines Compilers ab. Wenn Du Dein Programm statisch linkst bzw. die garantie hast, daß rand() nicht aus irgendeiner DLL oder SharedLibrary gezogen wird, kannst Du aber von gleichen Werten ausgehen.
Zitat von ~_radix: |
Also wenn man für einen bestimmten srand() Wert auf allen PCs die gleiche zufällige Zahlenfolge erhält, ist das eigentlich ne gute Grundlage fürn Verschlüsselungsalgorithmus, oder?
|
Nein: denn angenommen, rand() liefert immer die gleiche zahl, so macht es wohl kaum noch einen Unterschied, ob ich rand aufrufe oder mit die Zahl selbst aus den Fingern sauge: sie iwäre eben vorhersagbar.
Zitat: |
WQie generirt rand() eigentlich die Zufallszahlen?
|
Das ist Plattformabh. es gibt sogar inzwischen Hardware, die aus dem elektrischen Rauschen eine Zufallsfolge von 0 und 1 generiert. Die einfachste Methode ist etwa die:
Eingabe: seed: Zahl die mit srand() gesetzt wurde oder durch den Letzen Aufruf von rand wie folgt ermittelt wurde
Ausgabe: Zahl: Zufallszahl
zahl := seed*6364136223846793005 + 1 seed := zahl >> 32 zahl := zahl & (0xffffffff)
Naturgemäß haben diese Algorithmen ihre grenzen. Diese Komische zahl "6364136223846793005" etwa muß mit bedacht gewählt werden.
Das alles ist ne Wissenschaft für sich. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |