Random number generate in an interval

3 ビュー (過去 30 日間)
Guilherme Lopes de Campos
Guilherme Lopes de Campos 2023 年 9 月 14 日
コメント済み: Walter Roberson 2023 年 9 月 22 日
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 件のコメント
Walter Roberson
Walter Roberson 2023 年 9 月 14 日
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
ans =
9.195
so over 9% of the samples are outside of the target range
Walter Roberson
Walter Roberson 2023 年 9 月 22 日
It works! Thank you very much

サインインしてコメントする。

回答 (2 件)

the cyclist
the cyclist 2023 年 9 月 14 日
編集済み: the cyclist 2023 年 9 月 14 日
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?

Bruno Luong
Bruno Luong 2023 年 9 月 14 日
編集済み: Bruno Luong 2023 年 9 月 15 日
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)

Community Treasure Hunt

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

Start Hunting!

Translated by