Random number generation from uniform distribution

2 views (last 30 days)
Good afternoon, I'm currently trying to generate random numbers from a uniform distribution, but I'm not sure how to input probabilities.
For example, Let S be uniformly distributed between 70 and 130:
a=70;
b=130;
S=a+(b-a).*rand
However, let's say we want to generate T which is uniformly distributed: between 0.1 and 1.0 (with probability 0.75) between 1.0 and 5.0 (with probability 0.25)
Is it possible to use the rand function as normal? i.e.
a=0.1;
b=1.0;
c=5.0
T=([a+(b-a).*rand]*0.75)+([b+(c-b).*rand]*0.25)
I appreciate any feedback.
  1 Comment
dpb
dpb on 14 Aug 2014
T=([a+(b-a).*rand]*0.75)+([b+(c-b).*rand]*0.25)
No, that's scaling the return value by the two probabilities, not the frequency. Need to scale values returned from rand <0.75 to range [a,b] and the rest to [b,c]

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 14 Aug 2014
N = 1000000;
a=0.1;
b=1.0;
c=5.0;
r1 = rand(N,1);
r2 = rand(N,1);
T=(a+(b-a).*r1).*(r2<=0.75) + (b+(c-b).*r1).*(r2>0.75);
figure
hist(T,0.105:0.01:4.995)
  1 Comment
Ronan
Ronan on 14 Aug 2014
Thank you very much for your help, the cyclist. Greatly appreciated! :)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!