# How to generate random number from cumulative distribution function (CDF) in Matlab

49 views (last 30 days)
Moe on 5 Jun 2015
Commented: Moe on 5 Jun 2015
Hi everyone,
Similar to R program, I'm looking for a code in Matlab that I can generate a set of random number with a specific mean (M) and standard deviation (sd).
R code to generate random number with normal distribution from CDF:
> pnorm(1.96, mean=0, sd=1)
 0.9750021

Image Analyst on 5 Jun 2015
For the more general case of an arbitrary CDF , you have to use inverse transform sampling. Attached is an example for generating a Rayleigh transform.

Image Analyst on 5 Jun 2015
Did you see the example in the help for randn()? Here it is:
Random Numbers from Normal Distribution with Specific Mean and Variance
This example shows how to create an array of
random floating-point numbers that are drawn
from a normal distribution having a mean of 500 and variance of 25.
The randn function returns a sample of random numbers from a normal distribution
with mean 0 and variance 1. The general theory of random variables
states that if x is a random variable whose mean is μ
x
and variance is σ
2
x
, then the random variable, y, defined by y=ax+b,
where a and b are constants, has mean μ
y
=aμ
x
+b and variance σ
2
y
=a
2
σ
2
x
. You can apply this concept to get a sample of
normally distributed random numbers with mean 500 and variance 25.
First, initialize the random number generator to make the results in this example repeatable.
rng(0,'twister');
Create a vector of 1000 random values
drawn from a normal distribution with a mean of 500
and a standard deviation of 5.
a = 5;
b = 500;
y = a.*randn(1000,1) + b;

Sean de Wolski on 5 Jun 2015
doc slicesample
doc random
Moe on 5 Jun 2015
with this command:
rnd = slicesample(initial,nsamples,'pdf',pdf)
Can you give me a simple example of it?