use Digest::SHA 'sha384_hex'; my $rng = generate_rng('salty' . localtime() . $$); print $rng->(), "\n" for 0..100; sub generate_rng { my $seed = shift; return sub { $seed = sha384_hex($seed); my $rnd = hex(substr($seed, 0, 4)); return $rnd; }; }