Normal random number generation

5 visualizzazioni (ultimi 30 giorni)
Sushant
Sushant il 22 Set 2022
Modificato: Torsten il 22 Set 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 Commento
Dyuman Joshi
Dyuman Joshi il 22 Set 2022
Modificato: Dyuman Joshi il 22 Set 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 -

Accedi per commentare.

Risposte (2)

Torsten
Torsten il 22 Set 2022
Modificato: Torsten il 22 Set 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 Commento
Dyuman Joshi
Dyuman Joshi il 22 Set 2022
Quite a neat function.
However, OP might not have access to Stats and ML toolboox.

Accedi per commentare.


Bruno Luong
Bruno Luong il 22 Set 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