How to generate random numbers from a normal distribution with specific mean and variance?

27,382

Solution 1

A standard normal distribution already has mean 0 and variance 1.

If you want to change the mean, just "translate" the distribution, i.e., add your mean value to each generated number. Similarly, if you want to change the variance, just "scale" the distribution, i.e., multiply all your numbers by sqrt(v). For example,

v = 1.5; % variance
sigma = sqrt(v); % standard deviation
mu = 2; % mean
n = 1000
X = sigma .* randn(n, 1) + mu;
stats = [mean(X) std(X) var(X)]

See the following article:

https://ch.mathworks.com/help/matlab/math/random-numbers-with-specific-mean-and-variance.html

for more info.

Solution 2

You could also call

normrnd(0,1,[M,N])

or

random('Normal',0,1,[M,N])
Share:
27,382
Ali Bassam
Author by

Ali Bassam

Peaceful Lebanese Citizen, Loves Computers and Technology, Programming and the Web. You can follow me here alibassam.com here twitter.com/alibassam_ and here.. on StackOverflow!

Updated on July 09, 2022

Comments

  • Ali Bassam
    Ali Bassam almost 2 years

    I need to generate a Gaussian random sample of n numbers, with mean 0 and variance 1, using the randn function.

    In general, how would I generate a Gaussian random sample X of n numbers, with mean mu and variance v, using the randn function?