, ().
perl -V:randbits
use Config;
my $randbits = $Config{randbits};
rand 2 ^ randbits . , 2 ^ randbits, [0, N), N > 2 ^ randbits.
N, , , ( ) . , .
, randbits - 15 Windows. , 32768 (2 ** 15) . , rand :
use Config;
use constant RANDBITS => $Config{randbits};
use constant RAND_MAX => 2**RANDBITS;
sub double_rand {
my $max = shift || 1;
my $iv =
int rand(RAND_MAX) << RANDBITS
| int rand(RAND_MAX);
return $max * ($iv / 2**(2*RANDBITS));
}
, randbits = 15, double_rand randbits = 30, 1073741824 (2 ** 30) . ( ) , .