in reply to how portable is the random number generator?
#!/usr/bin/perl -w use strict; use warnings; my $S = 7379.74575; # Seed my $A = 171.379999; # Multiplier my $B = 556.625571; # Offset my $C = 3799.197357; # Mod # Generate random numbers between $MIN and $MAX: my $MIN = 0; my $MAX = 80; my $myRandomInt; for (my $i = 0; $i < 130; $i++) { $S = FMOD($S * $A + $B, $C); $myRandomInt = int($S % ($MAX - $MIN) + $MIN); print $myRandomInt, "\t"; } exit; # Usage: NUMBER = FMOD(DIVIDEND, DIVISOR) sub FMOD { return $_[0] - int($_[0] / $_[1]) * $_[1]; }
This program should generate the following list regardless of the type of computer or OS or Perl version:
4 32 79 6 8 27 42 29 79 + 76 65 45 37 8 28 54 2 77 55 + 66 51 78 47 74 11 8 70 46 59 + 66 18 71 50 34 54 17 68 12 41 + 72 4 66 16 72 68 75 13 69 26 + 77 25 36 3 11 38 72 75 41 70 + 15 57 17 40 77 31 39 3 56 48 + 23 60 79 33 57 51 19 4 74 41 + 64 53 22 41 49 19 54 52 63 49 + 76 65 9 61 21 35 25 67 12 30 + 3 22 54 50 44 34 63 56 60 66 + 57 77 52 56 41 37 24 73 26 58 + 71 57 20 1 14 6 21 62 30 63 + 0
|
|---|