How do I generate numbers from an Exponential Distribution within Min and Max values?
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sean Sarran
el 11 de Jul. de 2023
Comentada: Star Strider
el 11 de Jul. de 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 comentarios
Respuesta aceptada
Star Strider
el 11 de Jul. de 2023
pd = makedist('Exponential','mu', 1.5);
t = truncate(pd, 0.5, 4.3);
r = random(t,10000,1);
figure
histogram(r,100)
.
2 comentarios
John D'Errico
el 11 de Jul. de 2023
Editada: John D'Errico
el 11 de Jul. de 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.
Más respuestas (2)
Vishnu
el 11 de Jul. de 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 comentarios
Torsten
el 11 de Jul. de 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 comentarios
Ver también
Categorías
Más información sobre Random Number Generation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!