At 05:40 AM 4/29/2010, Nick Crosbie wrote:
Hi,
In S+/R, is there an easy way to generate random numbers with a
probability distribution specified by an exact user-defined function?
For example, I have a function:
f(x) = 1/(365 * x), which should be fitted for values of x between 1 and
100,000
How do I generate random numbers with a probability distribution that
exactly maps the above function?
Nick
First of all, your pdf should be f(x) = 1 / [x log(100000)], if x is
continuous.
Second, compute the cdf as F(x) = ln(x) / log(100000).
Third, compute the inverse cdf as G(p) = exp[p log(100000)]
Finally, to generate random variates, use G(u), where u is a uniform
random variate in [0,1].
In R,
> G<- function (p) exp(p*log(100000))
> G(runif(5))
[1] 11178.779736 9475.748549 65939.487801 94914.354479 1.694695
================================================================
Robert A. LaBudde, PhD, PAS, Dpl. ACAFS e-mail: r...@lcfltd.com
Least Cost Formulations, Ltd. URL: http://lcfltd.com/
824 Timberlake Drive Tel: 757-467-0954
Virginia Beach, VA 23464-3239 Fax: 757-467-2947
"Vere scire est per causas scire"
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.