Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

RE: RE: Randomizing Unique ID?

by tye (Sage)
on Aug 09, 2000 at 21:54 UTC ( #27123=note: print w/replies, xml ) Need Help??

in reply to RE: Randomizing Unique ID?
in thread Randomizing Unique ID?

Note that this is barely adequate since a "typical" double has 53 bits of mantissa (not counting the sign bit) which can handle just under 16 decimal digits while time() currently returns 9 digits but will soon return 10, while $$ is typically no more than 5 digits (total will soon be 15 digits).

Doing the conversion to base-62 in two steps would give you lots of room (and different results).

        - tye (but my friends call me "Tye")

Replies are listed 'Best First'.
RE: RE: RE: Randomizing Unique ID?
by Adam (Vicar) on Aug 09, 2000 at 22:03 UTC
    Well, If you want more room in the double, then do the base conversion before doing the concatenation, thusly:
    # Generate a truly unique ID sub GenerateBase { my $base = shift; $base = 62 if $base > 62; my @nums = (0..9,'a'..'z','A'..'Z')[0..$base-1]; return sub { my $number = shift; my $rep = ""; # this will be the end value. while( $number > 0 ) { $rep = $nums[$number % $base] . $rep; $number = int( $number / $base ); } return $rep; } } my $ToBase62 = GenerateBase( 62 ); my $ID = $ToBase62->( $$ ) . $ToBase62->( time );

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://27123]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (2)
As of 2018-03-19 05:41 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (232 votes). Check out past polls.