Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Generate random numbers with custom PDF

Asked by Michael on 11 Jun 2012

Hi, as it may become clear I'm fairly weak on probability distributions

I want to generate a set of random numbers between 0 and 1, but able to alter the weighting of these numbers. For example if I could input some sort of "bias" parameter which determines the extent to which the numbers tend to be closer to 0 than to 1, for example.

I don't know which of MATLAB's many distributions I should use. So far I've been using the uniform distribution and taking it to the power N, but N=0.5 seems to give an entirely different PDF shape (in favour of numbers close to 1) than the intended opposite bias, N=2 (in favour of numbers close to 0). Squaring it seems to favour small numbers far more than sqrt-ing seems to favour large numbers, so I've rejected this approach as unfair.

Is there a common distribution for this? Numbers have to be between 0 and 1 and I want to take control of how close they are, on average, to either.

Thanks Mike

0 Comments

Michael

Products

No products are associated with this question.

3 Answers

Answer by Tom Lane on 11 Jun 2012

If you have the Statistics Toolbox, then take a look at the beta distribution. Use it with disttool to see how the parameters affect the distribution, randtool to see what a random sample from this distribution looks like, and betarnd to generate your own sample from the command line or inside a function.

0 Comments

Tom Lane
Answer by Pantelis Sopasakis on 10 May 2013

You may consider using this PDFSampler. I believe, it does exactly what you need. You just need to specify how you want your samples to be distributed, e.g. you may provide their histogram.

0 Comments

Pantelis Sopasakis
Answer by Image Analyst on 10 May 2013

Tons of distributions are given here: http://www.mathworks.com/matlabcentral/fileexchange/7309-randraw

In general, you basically compute the CDF of your PDF function and invert it. Go here for a generally applicable explanation of how to do it: http://en.wikipedia.org/wiki/Inverse_transform_sampling

0 Comments

Image Analyst

Contact us