Variate Generation for Exponential Distribution
vexp(n, rate = 1, stream = NULL, antithetic = FALSE, asList = FALSE)
number of observations
Rate of distribution (default 1)
if NULL
(default), uses stats::runif
to generate uniform variates to invert via
stats::qexp
;
otherwise, an integer in 1:25 indicates the rstream
stream
from which to generate uniform variates to invert via
stats::qexp
;
if FALSE
(default), inverts stats::runif
or
rstream::rstream.sample
; otherwise, uses
if FALSE
(default), output only the generated
random variates; otherwise, return a list with components suitable for
visualizing inversion. See return for details
If asList
is FALSE (default), return a vector of random variates.
Otherwise, return a list with components suitable for visualizing inversion, specifically:
A vector of generated U(0,1) variates
A vector of exponential random variates
Parameterized quantile function
Parameterized title of distribution
Generates random variates from the exponential distribution.
Exponential variates are generated by inverting uniform(0,1) variates
produced either by stats::runif
(if stream
is
NULL
) or by rstream::rstream.sample
(if stream
is not NULL
).
In either case, stats::qexp
is used to
invert the uniform(0,1) variate(s).
In this way, using vexp
provides a monotone and synchronized
binomial variate generator, although not particularly fast.
The stream indicated must be an integer between 1 and 25 inclusive.
The exponential distribution with rate
for
# NOT RUN {
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qexp
vexp(3, rate = 2)
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qexp
vexp(3, 2, stream = 1)
vexp(3, 2, stream = 2)
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qexp
vexp(1, 2, stream = 1)
vexp(1, 2, stream = 2)
vexp(1, 2, stream = 1)
vexp(1, 2, stream = 2)
vexp(1, 2, stream = 1)
vexp(1, 2, stream = 2)
set.seed(8675309)
variates <- vexp(1000, 2, stream = 1)
set.seed(8675309)
variates <- vexp(1000, 2, stream = 1, antithetic = TRUE)
set.seed(8675309)
# NOTE: Default functions for M/M/1 ssq(), ignoring fixed n
interarrivals <- vexp(1000, rate = 1, stream = 1)
services <- vexp(1000, rate = 10/9, stream = 2)
# }
Run the code above in your browser using DataLab