Normal random number generation
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Dyuman Joshi
2022 年 9 月 22 日
編集済み: Dyuman Joshi
2022 年 9 月 22 日
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=(y-min(y))/(max(y)-min(y))
I also recommend you check out these comments -
回答 (2 件)
Torsten
2022 年 9 月 22 日
編集済み: Torsten
2022 年 9 月 22 日
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 件のコメント
Dyuman Joshi
2022 年 9 月 22 日
Quite a neat function.
However, OP might not have access to Stats and ML toolboox.
Bruno Luong
2022 年 9 月 22 日
Here is an alternatve without stats tbx
X=TruncatedGaussian(-1,[0 1],[1, 1e6]);
histogram(X)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1132960/image.png)
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!