Random number generate in an interval
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi community,
I would like to generate random number in the follow distribuition: Normal, Gamma and Weibull.
Amount of data required: 5000 numbers at interval [a,b]
At the example, it was used the follow code:
A = linspace(0,1,5000)
sr = size(A)
b = normrnd(27.5,15.73,sr)
plot(b)
Its works, however, the valid interval to generate was [1,54]
Can us help me, please?
Yours faithfully
7 commentaires
Walter Roberson
le 14 Sep 2023
Right, different interpretations of what "clipping" means in the context.
format long g
b = normrnd(27.5,15.73,[1 500000]);
out_of_range = (b < 1) | (b > 54);
mean(out_of_range) * 100
so over 9% of the samples are outside of the target range
Walter Roberson
le 22 Sep 2023
It works! Thank you very much
Réponses (2)
the cyclist
le 14 Sep 2023
Modifié(e) : the cyclist
le 14 Sep 2023
A normal distribution, by definition, has support from negative infinity to positive infinity. You cannot have both a normal distribution and a finite range.
You can use the truncate function to create a truncated normal distribution object, and draw values from that. (See the second example on that page.) Is that what you want?
0 commentaires
Bruno Luong
le 14 Sep 2023
Modifié(e) : Bruno Luong
le 15 Sep 2023
The file TruncatedGaussian.m is from this page https://www.mathworks.com/matlabcentral/fileexchange/23832-truncated-gaussian?s_tid=srchtitle
This doesn't need stat toolbox.
sigma = 15.73;
mu = 27.5;
interval = [1 54];
n = [1, 5000000];
X = TruncatedGaussian(-sigma,interval-mu,n) + mu;
histogram(X)
0 commentaires
Voir également
Catégories
En savoir plus sur Random Number Generation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


