Hi,
mit srand kann man Zufallszahlen erzeugen. Die Funktion wird (ohne Argument) mit dem Zeitwert 1.1.1970 (richtig?) initialisiert. Nun, wenn ich z.B. 20 Zufallszahlen nacheinander erzeugen will, wie kann ich dafür sorgen, daß alle 20 Zahlen auch unterschiedlich sind?
Ich hab's mit einer while-Schleife versucht, um die Abarbeitung des Skriptes zu verlangsamen und damit auch unterschiedliche Zahlen zu bekommen aber geht's nicht eleganter?
Professor Doktor Perldoc sagt dazu:
In fact, it's usually not necessary to call srand() at all, because if it is not called explicitly, it is called implicitly at the first use of the rand() operator. However, this was not the case in version of Perl before 5.004, so if your script will run under older Perl versions, it should call srand().
[...]
Do not call srand() multiple times in your program unless you know exactly what you're doing and why you're doing it. The point of the function is to ``seed'' the rand() function so that rand() can produce a different sequence each time you run your program. Just do it once at the top of your program, or you won't get random numbers out of rand()!
Also, mit einem entsprechend neuen Perl kannst Du auf srand() komplett verzichten, mit einem älteren benutze es nur einmal im Script. Ansonsten ist jeder Zufallsgenerator nur so gut wie... öh... Moment, seit wann sind Zufallsgeneratoren gut? :-)
Wenn Du wirklich zufällige Werte[tm] haben willst, solltest Du Dich mit dem (CPAN-)Modul Math::TrulyRandom beschäftigen (siehe http://www.perl.com/CPAN/).
Cheatah