3

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?

nbro
  • 15,395
  • 32
  • 113
  • 196
Ali Bassam
  • 9,691
  • 23
  • 67
  • 117

2 Answers2

12

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.

nbro
  • 15,395
  • 32
  • 113
  • 196
nbonneel
  • 3,286
  • 4
  • 29
  • 39
5

You could also call

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

or

random('Normal',0,1,[M,N])
nbro
  • 15,395
  • 32
  • 113
  • 196
fpe
  • 2,700
  • 2
  • 23
  • 47