Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.

# Thread: Generating a random number taken from a normal distribution

1. ## Generating a random number taken from a normal distribution

Hello,

I need help creating a function in javascript that produces random numbers generated from a normal curve distribution with a mean and standard deviation that I can specify (and easily change). I would like only whole numbers and the ability to set reasonable maximum and minimums.

Thanks,
Adrian

• Code:
```<script type = "text/javascript">

function rnd_snd() {
return (Math.random()*2-1)+(Math.random()*2-1)+(Math.random()*2-1);
}

// Three random numbers between -1 and 1 added together. That will give a normal distribution with mean = 0 and standard deviation = 1.
// The function will return a decimal with an average value of 0.

function rnd(mean, stdev) {
return Math.round(rnd_snd()*stdev + mean);
}

// Multiply the result by the standard deviation that you want, then add your desired mean.

alert (rnd(38,2))  // mean, standard deviation

</script>```

All advice is supplied packaged by intellectual weight, and not by volume. Contents may settle slightly in transit.

• ## Users who have thanked Philip M for this post:

ac11ca (02-03-2012)

• Originally Posted by Philip M
Code:
```// Three random numbers between -1 and 1 added together. That will give a normal distribution with mean = 0 and standard deviation = 1.
// The function will return a decimal with an average value of 0.```
out of interest, do you have any detailed info about that statement?

• Originally Posted by Dormilich
out of interest, do you have any detailed info about that statement?
Not quite sure what you mean, but all I have done here is added three random numbers between -1 and 1 together. That will give a point (almost +3 to almost -3) on a normal distribution with mean = 0 and standard deviation = 1. This is also called standard normal distribution. Try it yourself:-

Code:
```<script type = "text/javascript">

var tot = 0;
var its = 500; // iterations
for (var i = 0; i<its; i++) {
var randy = (Math.random()*2-1)+(Math.random()*2-1)+(Math.random()*2-1);
tot += randy;
document.write(randy);
document.write("<br>")
}

alert (tot/its);   // close to zero, especially if the number of iterations is increased to (say) 10000

</script>```
For more info Google for Box-Muller transform.

• Originally Posted by Philip M
For more info Google for Box-Muller transform.
thanks, that was the bit of info I wanted.

• Thank you! Very useful, and I will have a play around with it soon.

Now things get a little more tricky: What about a chi square distribution (with 3 degrees of freedom)?

Cheers,
Adrian

• Originally Posted by ac11ca
Now things get a little more tricky: What about a chi square distribution (with 3 degrees of freedom)?
Well, what about it? Google to find for example

http://www.fourmilab.ch/rpkp/experim...s/chiCalc.html

• ## Users who have thanked Philip M for this post:

ac11ca (02-06-2012)

•

#### LinkBacks (?)

1. ###### JavaScript - Generating A Random Number Taken From A Normal Distribution - AllWebDevHelp.com
Refback This thread
04-07-2014, 12:03 PM

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•