RNGkind
allows user-coded uniform and
normal random number generators to be supplied. The details are given
here.
user_unif_rand
, which takes no arguments and returns a
pointer to a double. The example below will show the general
pattern. Optionally, the user can supply the entry point user_unif_init
,
which is called with an unsigned int
argument when
RNGkind
(or set.seed
) is called, and is intended
to be used to initialize the user's RNG code. The argument is intended
to be used to set the seeds; it is the seed
argument to
set.seed
or an essentially random seed if RNGkind
is called.
If only these functions are supplied, no information about the
generator's state is recorded in .Random.seed
. Optionally,
functions user_unif_nseed
and user_unif_seedloc
can be
supplied which are called with no arguments and should return pointers
to the number of seeds and to an integer (specifically, Int32)
array of seeds. Calls to GetRNGstate
and PutRNGstate
will then copy this array to and from .Random.seed
.
A user-specified normal RNG is specified by a single entry point
user_norm_rand
, which takes no arguments and returns a
pointer to a double.