Random Normal deviates within compiled function?
- To: mathgroup at smc.vnet.net
- Subject: [mg62282] Random Normal deviates within compiled function?
- From: Gareth Russell <russell at njit.edu>
- Date: Sat, 19 Nov 2005 05:54:02 -0500 (EST)
- Organization: New Jersey Institute of Technology
- Sender: owner-wri-mathgroup at wolfram.com
Hi All,
I have a function which needs to be quick as it's used in simulations,
and it requires the internal generation of a large vector of random
normal deviates (up to 50,000). It appears that a function like
Random[NormalDistribution[0,s]] cannot be compiled. Can anyone suggest
an algorithm for getting such numbers that would work within a Compile
statement and still be quicker than using the non-compiled function?
The non-compiled function would look as follows:
f[v_,r_,k_,s_,q_]:=Select[v*Exp[r*(1 - v/k) +
RandomArray[NormalDistribution[0, s],
Length[v]]], # > q &]
where v is a vector of 50,000 reals, and r, k, s and q are scalar reals.
(If anyone is interested, this is for population projection in
population viability analysis.)
Thanks,
Gareth Russell
NJIT