# MATLAB - Random Number Generation

• Feb 17th 2009, 10:09 AM
Mush
MATLAB - Random Number Generation
Hi.

Basically I want to generate four random numbers in a certain interval, and they can't be equal (unlikely to happen, but just incase!).

So let's imagine, that, for example, that interval is [0.5,1]. I want to generate a number in that interval, use it in a calculation, then generate another number on that interval, and use that in the same calculation, etc.

So:

Code:

```a1 = some number in [0.5,1] operation on a1 a2 = some number in [0.5,1] not equal to a1 operation on a2 a3= some number in [0.5,1] not equal to a1 or a2 operation on a3 a4 = some number in [0.5,1] not equal to a1 or a2 or a3 operation on a4```
I know that the 'rand' command generates a number on the interval [0 1]. Hrm. But I can't find any way to use that to meet my end.
• Feb 17th 2009, 02:28 PM
Mush
I wrote something that works.

Code:

``` a = rand;         if a<0.5             a = a+0.5;         end           b = rand;         if b<0.5             b = b+0.5;         end         if b == a             while b == a                 b = rand;                 if b<0.5             b = b+0.5;                 end             end         end             c = rand;         if c<0.5             c = c+0.5;         end         if c == a             while c == a                 c = rand;                 if c<0.5             c= c+0.5;                 end             end         end         if c == b             while c == b                 c = rand;                 if c<0.5             c = c+0.5;                 end             end         end```
It works, but I'll be glad to hear of anything simpler?!
• Feb 17th 2009, 08:11 PM
CaptainBlack
Quote:

Originally Posted by Mush
Hi.

Basically I want to generate four random numbers in a certain interval, and they can't be equal (unlikely to happen, but just incase!).

So let's imagine, that, for example, that interval is [0.5,1]. I want to generate a number in that interval, use it in a calculation, then generate another number on that interval, and use that in the same calculation, etc.

So:

Code:

```a1 = some number in [0.5,1] operation on a1 a2 = some number in [0.5,1] not equal to a1 operation on a2 a3= some number in [0.5,1] not equal to a1 or a2 operation on a3 a4 = some number in [0.5,1] not equal to a1 or a2 or a3 operation on a4```
I know that the 'rand' command generates a number on the interval [0 1]. Hrm. But I can't find any way to use that to meet my end.

Let the interval be (b,t) then somethink like:

Code:

```function rv=RandIntvl(n,m,b,t) % %  function to produce a matrix of size nxm of random numbers %  uniformly distributed on (b,t) %     if t<=b       disp('error: b must be greater than t')       rv=[];       return     end       rv=rand(n,m);     rv=rv*(t-b)+b;```
should do part of the trick (warning: untested code).

CB
• Feb 18th 2009, 03:33 AM
Mush
[quote=CaptainBlack;268127]Let the interval be (b,t) then somethink like:

Code:

```function rv=RandIntvl(n,m,b,t) % %  function to produce a matrix of size nxm of random numbers %  uniformly distributed on (b,t) %     if t<=b : :```
How is it ensured that they are uniformly distributed? Does matlab do this by default when you create a matrix/vector of random numbers?
• Feb 18th 2009, 06:03 AM
CaptainBlack
Quote:

Originally Posted by Mush
How is it ensured that they are uniformly distributed? Does matlab do this by default when you create a matrix/vector of random numbers?

Code:

``` >help rand```
CB