Number generator for 0.00006 to 30 range
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
I am attempting to run monte carlo simulations and wanted a random number between the end members of 0.000069 and 30 to populate this equation through each pass of a for loop.  After looking at my model's output, I noticed that the Kd is heavily skewed toward larger numbers.  I then came across this thread which led me to read about creating one's own random number stream.  Is there a number generator out there that gives equal weight to each order of magnitude...ie I'd like the number generator to be equally likely to draw .0005, .05, 5, etc.   Originally I didn't realize that unifrnd was not appropriate for 0 to 1 range. Thank you in advance for any guidance. 
Kd=unifrnd(0.000069,30);
0 comentarios
Respuestas (2)
  weikang zhao
      
 el 14 de Sept. de 2022
        It looks like you don't want these random numbers to follow a uniform distribution, you want their logarithms to follow a uniform distribution.
try this way:
a=log10(0.000069);
b=log10(30);
Kd=10^(unifrnd(a,b));
0 comentarios
  Chunru
      
      
 el 14 de Sept. de 2022
        % Kd=unifrnd(0.000069,30);
logminmax = log10([0.000069,30]);
for i=1:20
    kdlog = unifrnd(logminmax(1), logminmax(2));
    kd = 10^kdlog
end
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


