# monte carlo from lognormal distribution?

6 views (last 30 days)

Show older comments

Hi,

I know how to select from a normal distribution...for example:

Cons = unifrnd(0,800);

But how does one select from a lognormal distribution? For data I have the data sample size, the mean, standard deviation, 1st, 5th, 10th, 25th, 50th, 75th, 90th, 95th, 99th percentiles for the distribution along with the max value. I've read the sections on lognormal distribution and I can't quite sort out how to work my data into the example presented.

Thank you in advance for any help!

##### 9 Comments

Jeff Miller
on 6 Jan 2023

### Answers (2)

Image Analyst
on 5 Jan 2023

You can get random samples from either the blue curve or the red curve if you know the heights of those bars.

Just use inverse transform sampling.

Attached is a demo for Rayleigh.

If you need more help, attach the (x,y) data for the red and blue bar charts.

##### 0 Comments

John D'Errico
on 5 Jan 2023

You have not told me the distribution quantiles yet. So I'll make some up.

P = [1, 5, 10, 25, 50, 75, 90, 95, 99]/100;

Q = logninv(P,2,3);

These are just some made up values. But now we can recover the distribution parameters easily enough. A simple test is to look at this plot:

z0 = norminv(P,0,1);

plot(z0,log(Q),'-o')

If that plot is linear, or reasonably close, then this scheme will work easily enough. In this case of course, the plot is exactly linear, since I constructed the data from a known lognoormal distribution.

P1 = polyfit(norminv(P,0,1),log(Q),1);

Mu = P1(2)

Sigma = P1(1)

Now if you want to generate a sample from that distribution, you can use those distribution parameters.

lognsample = lognrnd(Mu,Sigma,[1,5])

If the plot I showed above (for your data) is not linear or close to a straight line, then your distribution may not be lognormal.

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!