Re: rand() nicht zufällig?!

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Sat, 24 May 2003 15:08:26 +0200

On Sat, May 24, 2003 at 02:30:31PM +0200, Robert Lillack wrote:
> Jens Rehsack wrote:
>
> > Kannst Du mir ein System(tm) nennen, dass rand(3) besser umgesetzt hat?
>
> + SunOS 5.8 sun4u sparc SUNW,Ultra-80 mit gcc 3.2.1
> + Windows 2000 auf i386 mit Visual Studio oder so*
> + Linux 2.4.18 mit gcc 2.95.3 und libc.so.6*
>
> * == nicht persönlich getest, aber durch vertrauenswürdige
> Person testen lassen.
>
> > Denn eigendlich beschreibt der Standard auch das Verhalten, in diesem
> > Fall den Algorithmus.
>
> Mmmh. Wie es aussieht ist *das* der Algorithmus der in
> ANSI C definiert ist, zumindest habe ich das jetzt schon
> mehrmals gefunden¹:
>
> int rand() {
> next = next * 1103515245 + 12345;
> return ((next >>16) & 32767);
> }
>
> Das bedeutet dann also, dass sich keine Sau daran hält.

Ich glaube der Algorithmus ist nicht vorgeschrieben, aber es ist
vorgeschrieben, daß die Zahlenfolge reproduzierbar ist!
Wenn du also den gleichen seed verwendest, dann muß das Ergebniss
immer gleich sein - toller Zufall...

> Toll. Ich darf mich also auch noch darum kümmern, dass ich
> ordentliche Zufallszahlen bekomme, wenn ich portabel
> bleiben will. Suuuper.

Wenn du portabel bleiben willst, dann bediene dich aus den OpenSSL
Funktionen - die haben das Problem nämlich schon mehr oder weniger
gelöst.
Und OpenSSL ist inzwischen nahezu überall installiert.

-- 
B.Walter                   BWCT                http://www.bwct.de
ticso(at)bwct.de                                  info(at)bwct.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 24 May 2003 - 15:08:35 CEST

search this site