Normal random number generation

9 Ansichten (letzte 30 Tage)
Sushant
Sushant am 22 Sep. 2022
Bearbeitet: Torsten am 22 Sep. 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 Kommentar
Dyuman Joshi
Dyuman Joshi am 22 Sep. 2022
Bearbeitet: Dyuman Joshi am 22 Sep. 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 -

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Torsten
Torsten am 22 Sep. 2022
Bearbeitet: Torsten am 22 Sep. 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 Kommentar
Dyuman Joshi
Dyuman Joshi am 22 Sep. 2022
Quite a neat function.
However, OP might not have access to Stats and ML toolboox.

Melden Sie sich an, um zu kommentieren.


Bruno Luong
Bruno Luong am 22 Sep. 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