Random number generate in an interval

조회 수: 2 (최근 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)

카테고리

Help CenterFile Exchange에서 Random Number Generation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by