Login  Register

Re: Gaussian Random Number Generation

Posted by Ewing James on Sep 19, 2018; 1:19pm
URL: http://imagej.273.s1.nabble.com/Gaussian-Random-Number-Generation-tp5021203p5021207.html

Mark’s suggestion is the Box and Muller algorithm: Box G, Muller M. A Note on the Generation of Random Normal Deviates. Ann Math Stat. 1958;29:610-611.  It works well, but I’ve found that with many random number generators X and Y tend to be correlated.  You can check this by plotting X vs Y for a few hundred calculations. If there is a recognizable pattern (stripes, clusters) on the plot, X and Y are correlated (and thus not random).  I generally use only one of the pair if I really need a set of pseudorandom numbers that look truly random.

 - Jim


> On Sep 19, 2018, at 9:09 AM, Mark Osborne <[hidden email]> wrote:
>
> Greg
>
> Something like the following macro should work...
>
> var U; var V;
>
> function normal(){
> S = 2;
> while(S >= 1){
> U = -1+2*random; // uniform random no. -1..1
> V = -1+2*random;
> S = U*U+V*V;
> }
> }
>
> X = U * sqrt(-2*log(S)/S);   //or
> Y = V * sqrt(-2*log(S)/S);   // where log in ImageJ is natural ln
>
> X and Y are independent standard normally distributed random numbers, so you can multiply by a finite standard deviation to spread beyond unit STD and add to a mean to get the Gaussian.  Check against the Marsaglia polar method of generating normally distributed random numbers. Bit wasteful finding S<1, but easy to check and rather more intuitive than some.
>
> Mark
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Seitz Arne
> Sent: 19 September 2018 13:33
> To: [hidden email]
> Subject: Re: Gaussian Random Number Generation
>
> Dear Greg,
>
> the RandomJ plugin from Eric Meijering looks to me what you are asking for.
> https://imagescience.org/meijering/software/randomj/
>
> The only limitation it works on images. However it is macro recordable and the source code can be found on GitHub.
>
> Best
> Arne
>
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of JAMES, gregory (SANDWELL AND WEST BIRMINGHAM HOSPITALS NHS TRUST)
> Sent: mercredi 19 septembre 2018 14:09
> To: [hidden email]
> Subject: Gaussian Random Number Generation
>
> Dear ImageJ community,
>
>
> You are an intelligent group of people so I would like to ask this...
>
>
> Does anyone have a clever way of generating a random set of numbers that conform to a normal (Gaussian) distribution for a given mean and standard deviation using the 'random' macro function? I acknowledge that the ImageJ macro language is a slightly strange place to do this but I cannot use Excel because my data sets are so large and I would rather not learn a new scripting language (e.g. R).
>
>
> For what it's worth, it is quite straightforward to do in Excel using =NORMINV(RAND(), mean, stdev). Does anyone have a clever way of replicating this function in ImageJ?
>
>
> Many thanks,
>
>
> Greg.
>
>
> __________________________________________
> Gregory James
> Clinical Scientist (Nuclear Medicine)
> Department of Physics and Nuclear Medicine City Hospital Dudley Road Birmingham
> B18 7QH
>
> 0121 507 4043
>
>
> ********************************************************************************************************************
>
> This message may contain confidential information. If you are not the intended recipient please inform the sender that you have received the message in error before deleting it.
> Please do not disclose, copy or distribute information in this e-mail or take any action in relation to its contents. To do so is strictly prohibited and may be unlawful. Thank you for your co-operation.
>
> NHSmail is the secure email and directory service available for all NHS staff in England and Scotland. NHSmail is approved for exchanging patient data and other sensitive information with NHSmail and other accredited email services.
>
> For more information and to find out how you can switch, https://portal.nhs.net/help/joiningnhsmail
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html