Normal random number generation

14 visualizaciones (últimos 30 días)
Sushant
Sushant el 22 de Sept. de 2022
Editada: Torsten el 22 de Sept. de 2022
I want to generate some random numbers which should lie between 0 and 1. Also those values should follow nornal ditribution. Is there any readymade function for it, in MATLAB?
  1 comentario
Dyuman Joshi
Dyuman Joshi el 22 de Sept. de 2022
Editada: Dyuman Joshi el 22 de Sept. de 2022
You can normalize the data in between 0 to 1, though I am not sure if it will still follow normal distribution or not.
y=randn(1,7)
y = 1×7
-2.3212 -0.6273 -0.4058 0.3280 0.0769 1.5305 -0.0685
y=(y-min(y))/(max(y)-min(y))
y = 1×7
0 0.4398 0.4973 0.6878 0.6226 1.0000 0.5849
I also recommend you check out these comments -

Iniciar sesión para comentar.

Respuestas (2)

Torsten
Torsten el 22 de Sept. de 2022
Editada: Torsten el 22 de Sept. de 2022
pd = makedist('Normal');
t = truncate(pd,0,1);
r = random(t,1e6,1);
figure(1)
histogram(r,100)
Or directly:
r = -sqrt(2)*erfinv(rand(1e6,1)*erf(-1/sqrt(2)));
figure(2)
histogram(r,100)
Of course, the random numbers are not normally distributed in the usual sense.
  1 comentario
Dyuman Joshi
Dyuman Joshi el 22 de Sept. de 2022
Quite a neat function.
However, OP might not have access to Stats and ML toolboox.

Iniciar sesión para comentar.


Bruno Luong
Bruno Luong el 22 de Sept. de 2022
Here is an alternatve without stats tbx
X=TruncatedGaussian(-1,[0 1],[1, 1e6]);
histogram(X)

Community Treasure Hunt

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

Start Hunting!

Translated by