Random number generation from uniform distribution

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 commentaire

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]

Connectez-vous pour commenter.

 Réponse acceptée

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 commentaire

Ronan
Ronan le 14 Août 2014
Thank you very much for your help, the cyclist. Greatly appreciated! :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Random Number Generation dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by