Keep It Simple, Stupid PerlMonks

### 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?

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 );

Create A New User
Node Status?
node history
Node Type: note [id://27123]
help
Chatterbox?
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
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
When I think of a mole I think of:

Results (232 votes). Check out past polls.

Notices?