This function returns a function (closure) which generates UUIDs. The
state of that anonymous function is set when uuid.gen
is
called. The state consists of the following:
- System and user information (
Sys.info
) - Rversion (
R.version
) - Platform information (
.Platform
) - Working directory
- Process ID of theRsession
- Time when
uuid.gen
was called (precision of seconds or
finer) - The text in parameter
more.state
The Pseudo Random Number Generator of R(see .Random.seed
) is
used in the generation of UUIDs. No initialization of the PRNG is
done. Tampering with the state of the RPRNG while using a given
UUID generator causes a risk of non-unique identifiers. Particularly,
setting the state of the PRNG to the same value before two calls to
the UUID generator guarantees two identical identifiers. If two UUID
generators have a different state, it is not a problem to have
the PRNG going through or starting from the same state with both
generators.
The user is responsible for selecting a PRNG with a reasonable number
of randomness. Usually, this doesn't require any action. For
example, any PRNG algorithm available in Rworks fine. However, the
uniqueness of UUIDs can be destroyed by using a bad user-supplied
PRNG.
The UUIDs produced by uuid.gen
generators are Version 4
(random) with 122 random bits and 6 fixed bits. The UUID is presented
as a character string of 32 hexadecimal digits and 4 hyphens:
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
where x is any hexadecimal digit and y is one of 8, 9, a, or b. The
UUID generator gets 32 hex digits from the MD5 message digest
algorithm by feeding it a string consisting of the generator state and
5 (pseudo) random numbers. After that, the 6 bits are fixed and the
hyphens are added to form the final UUID.