How do I generate numbers from an Exponential Distribution within Min and Max values?
9 views (last 30 days)
Show older comments
Sean Sarran
on 11 Jul 2023
Commented: Star Strider
on 11 Jul 2023
How to generate random numbers with the exponential distribution applied, and also given a minimum value of 0.5, and a maximum value of 4.3, the mean is 1.5?
How do I add the maximum to the following?
pd = makedist('Exponential','mu', 1.5);
r=0;
while r<0.5
r=random(pd);
end
0 Comments
Accepted Answer
Star Strider
on 11 Jul 2023
pd = makedist('Exponential','mu', 1.5);
t = truncate(pd, 0.5, 4.3);
r = random(t,10000,1);
figure
histogram(r,100)
.
2 Comments
John D'Errico
on 11 Jul 2023
Edited: John D'Errico
on 11 Jul 2023
+1. Truncate is the correct solution, of course. It will sometimes be vastly more efficient compared to rejection schemes too, since random does not need to throw away a significant fraction of the generated samples.
More Answers (2)
Vishnu
on 11 Jul 2023
Hi Sean Sarran,
Simply insert a "or" statement in the while loop condition itself to apply a maximum value of 4.3.
Consequently, this is the whole code:
pd = makedist('Exponential', 'mu', 1.5);
r = 0;
while r < 0.5 || r > 4.3
r = random(pd);
end
0 Comments
Torsten
on 11 Jul 2023
pd = makedist('Exponential','mu', 1.5);
n = 100;
lb = 0.5;
ub = 4.3;
rv = zeros(n,1);
i = 0;
while i < n
r = random(pd);
if r >= lb & r <= ub
i = i+1;
rv(i) = r;
end
end
rv
0 Comments
See Also
Categories
Find more on Random Number Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!