roger: srand Zufallsgenerator

warum krieg ich immer die gleichen zahlen beim aufruf von:

$t = &zufall(0,$m-1);
$u = &zufall(0,$m-1);

sub zufall
{
srand();
return int(rand($_[1]-$_[0]+1))+$_[0];
}

$m wird im script als zahl definiert

ich möchte aber das $t und $u unterschiedlich sind. wie geht das?
kann mir einer helfen?

  1. hi!

    warum krieg ich immer die gleichen zahlen beim aufruf von:

    Wer lesen kann ist klar im Vorteil:

    perldoc -f srand
    === cut ===

    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'!

    === cut ===

    bye, Frank!

  2. ganz recht, srand initialisiert den zufallsgenerator. zusätzlich solltest du aber versuchen, die
    Initialisierungsfunktion srand mit einer Halbwegs zufaelligen zahl aufzurufen, z. B. so:

    srand(time ^ $$ ^ unpack "%32L*", /usr/binps /usr/bin/gzip);

    dein code:

    srand(time ^ $$ ^ unpack "%32L*", /usr/binps /usr/bin/gzip);
    $t = &zufall(0,$m-1);
    $u = &zufall(0,$m-1);

    sub zufall
    {

    »»  return int(rand($_[1]-$_[0]+1))+$_[0];

    }