[R] generate random numeric

Marc Schwartz m@rc_@chw@rtz @end|ng |rom me@com
Fri Oct 29 18:29:41 CEST 2021


Ken Peng wrote on 10/29/21 2:39 AM:
> I saw runif(1) can generate a random num, is this the true random?
> 
>> runif(1)
> [1] 0.8945383
> 
> What's the other better method?
> 
> Thank you.
> 
Hi,

You do not indicate your use case, and that can be important.

The numbers generated by R's default RNGs are "pseudo random" (PRNGs), 
which means that for most general purpose applications, such as common 
Monte Carlo simulations or randomized clinical trial treatment 
allocations, as suggested by the other replies, they will work fine.

As PRNGs, the actual pseudo-random permutations can be replicated by 
setting the same 'seed' value each cycle for the PRNG in use.

For example:

 > runif(5)
[1] 0.6238892 0.8307422 0.4955693 0.4182567 0.9818217

 > runif(5)
[1] 0.2423170 0.4129066 0.9213000 0.8290358 0.1644403

will yield two different, pseudo-random, sequences.

However:

 > set.seed(1)
 > runif(5)
[1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819

 > set.seed(1)
 > runif(5)
[1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819

will yield the same sequence given the use of the same seed value before 
each call to runif().

Thus, the sequences will appear to be random, but given a specific 
algorithm and seed value, they are deterministic.

That repeatable behavior can be important if one wishes to come back at 
some future date and replicate the exact same output sequence, presuming 
other factors have not changed in the mean time, such as occurred with R 
version 3.6.0, which is referenced in ?Random, where a default changed 
to improve behavior.

Also, some R functions may use simulation or resampling approaches to 
create various parameters, and you may wish to replicate the same result 
with each iteration. Setting the seed value prior to the relevant 
function call can enable that.

Also, review the resources at https://www.random.org for additional 
references on the differences between PRNGs and other implementations, 
especially if you might need something closer to a "true" RNG for more 
rigorous work.

Regards,

Marc Schwartz



More information about the R-help mailing list