Veröffentlicht 13. August 200124 j Moin Leute, und wieder steh ich vor einem ungelöstem Problem ;-) Wie generiert man unter Perl eine random-zahl? Unter C gabs früher (ganz ganz früer ;-) mal so ne funktion. Gibts da auch was für Perl. Gruß euer Raudi
13. August 200124 j Hallo Raudi! folgendes steht zu deinem Problem im Perl-Cookbook. Ich hoffe du kannst Englisch. --------------------------------------------------- 2.7. Generating Random Numbers Problem You want to make random numbers in a given range, inclusive, such as when you randomly pick an array index, simulate rolling a die in a game of chance, or generate a random password. Solution Use Perl's rand function. $random = int( rand( $Y-$X+1 ) ) + $X; Discussion This code generates and prints a random integer between 25 and 75, inclusive: $random = int( rand(51)) + 25; print "$random\n"; The rand function returns a fractional number, from (and including) 0 up to (but not including) its argument. We give it an argument of 51 to get a number that can be 0 or more, but never 51 or more. We take the integer portion of this to get a number from 0 to 50, inclusive (50.99999.... will be turned to 50 by int). We then add 25 to it, to get a number from 25 to 75, inclusive. A common application of this is the random selection of an element from an array: $elt = $array[ rand @array ]; And generating a random password from a sequence of characters: @chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) ); $password = join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]); We use map to generate eight random indices into @chars, extract the corresponding characters with a slice, and join them together to form the random password. This isn't a good random number, though, as its security relies on the choice of seed, which is based on the time the program started. See Recipe 2.8 for a way to better seed your random number generator. -------------------------------------------------- Gruß Jaraz
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.