MATLAB: Randn command variance problem

randnvariance

Hello, i am trying to create a randomly distributed temperature where the avarage is 310 and variance is 4.
I wrote the following code, but as could be seen from the plot bellow it gives me values of 318 ,301 which are far away from variance 4.
Where did i go wrong?
Thanks
n=100000;
Temp_rand=2*randn(n,1);
T = 37+273+Temp_rand;
plot(T);
xlabel('sample number');
ylabel('Temperature');

Best Answer

In a normal distribution, the variance is not the maximum limit between two random numbers. A single random number can go way beyond the variance (but the probability of that happening is extremely small). If you want to have a strict limit, then use uniform random numbers. For example,
n=100000;
min_value = 27+273-4;
max_value = 27+273+4;
T = min_value + (max_value - min_value) * rand(n,1);
plot(T);
xlabel('sample number');
ylabel('Temperature');
ylim([min_value-2, max_value+2]);