generate n random number between two numbers follow exponential distribution

2 ビュー (過去 30 日間)
Mos_bad
Mos_bad 2019 年 2 月 12 日
編集済み: Star Strider 2019 年 2 月 12 日
I need to generate n random number between a and b which follow the exponential distribution (In this perticular case a=0, b=75, random number =t=occurance time; I need exactly "n=60" random numbers of "t" which are less than 75). here is what I have done:
mu=475; % return period
lambda=1/mu; % occurance rate
u=rand(100,1); % uniform random numbers between 0 and 1
t=icdf('Exponential',u,mu); % exponential random numbers of time

採用された回答

Star Strider
Star Strider 2019 年 2 月 12 日
I would use the Statistics and Machine Learning Toolbox exprnd (link) function.
Experiment to get the result you want.
  2 件のコメント
Mos_bad
Mos_bad 2019 年 2 月 12 日
Thanks for the response. If doing so, how I can generate ''n'' random numbers between "a" and "b" ?
Star Strider
Star Strider 2019 年 2 月 12 日
編集済み: Star Strider 2019 年 2 月 12 日
My pleasure.
Try this:
mu = 475;
n = 1E+5;
R = exprnd(mu,1,n);
a = 10;
b = 20;
Rbounded = R((R>=a) & (R<=b));
n = 42;
R_return = Rbounded(randperm(numel(Rbounded),n));
That will give you ‘n’ values from the exponential distribution with .
Experiment to get the result you want.

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

その他の回答 (1 件)

Jeff Miller
Jeff Miller 2019 年 2 月 12 日
With Cupid the command is
somerands = TruncatedX(Exponential(lambda),a,b).Random(n,1);

Community Treasure Hunt

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

Start Hunting!

Translated by