#!/usr/bin/perl use strict; use warnings; use Digest::MD5 (); sub digest_mix {    my ($random1) = @_;    my $ctx = Digest::MD5->new;    for my $i (0 .. 3) {        $ctx->add($random1 & 0xff);        $random1 >>= 8;    }    return $ctx->digest; } {    my $_rand = time;    sub srandom {        $_rand = shift if @_;        return $_rand;    }    sub random {        $_rand = unpack("L", digest_mix($_rand));        return $_rand;    } } srandom(10); for (1 .. 10) {    print random(), "\n"; }