How do I generate numbers from an Exponential Distribution within Min and Max values?
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Star Strider
2023-7-11
pd = makedist('Exponential','mu', 1.5);
t = truncate(pd, 0.5, 4.3);
r = random(t,10000,1);
figure
histogram(r,100)
.
2 个评论
John D'Errico
2023-7-11
编辑:John D'Errico
2023-7-11
+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.
更多回答(2 个)
Vishnu
2023-7-11
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 个评论
Torsten
2023-7-11
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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!