MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# random number generation within the defined range

Asked by Dyno on 10 Apr 2012

Hii,

First of all thanks to everybody for giving time to respond to my question, which is as follows:

I am trying to generate a random number between -.4776 and .5004 with the mean as .02528 and standard deviation as .116. I tried using the following command but its violating the specified range.

r = -.4776 +(.5004+.4776).*normrnd(.02528, .116,179290, 1)

Any help in this regard??

Thanks a lot!!

## Products

No products are associated with this question.

Answer by Daniel on 10 Apr 2012

You cannot use a Gaussian/normal distribution and expect all the values to fall into a particular range. When you specify a range the most common distribution is a uniform distribution. For your range a uniform distribution does not have the desired mean or standard deviation.

Answer by Junaid on 10 Apr 2012

As Daniel suggested that we might not get exactly what you want. But there can be several tricks. Once possible trick is that you generate random numbers by defining the range;

```m + s to m - s;
```

where m, and s are required mean and standard deviation.

ex.

```m =  .02528;
s = .116;
```
```a = m + s;
b = abs(m - s);
% now generating the numbers between a and b.
g = a + (b-a).*rand(100,1);
```

You get mean and standard deviation very close to you required values.

## 1 Comment

Daniel on 10 Apr 2012

I think you reversed the m and the s, but either way this does not really give the desired range (although it doesn't violate the range either), and has the incorrect standard deviation. The standard deviation of a uniform distribution is |a-b|/sqrt(12).

Answer by Dyno on 10 Apr 2012

@ Junaid i tried working your trick but it dosent seem to solve my problem. @ Junaid and Daniel: To briefly describe my problem, i am modelling the error pattern present at my sensor outputs. On investigating the error pattern i found the mean and the standard deviation alongwith its range. I thought if i could generate the same distribution using the given statistical properties (i.e., mean, median and the range) i would be able to compensate for the error present at my sensor output. It seems i am not in right track, I would have to look for another analysis to compensate.

I would really appreciate if you have any suggestions.

Thanks!!