Yus*_*sef 5 matlab normal-distribution gaussian uniform-distribution
我想在matlab中生成高斯和均匀分布的数字.我知道这个功能 randi,rand()但所有这些都是正常(高斯)分布.如何在均匀分布中生成随机数?
sup*_*pyo 14
使用rand(dimensions)一个均匀分布在0和1之间.
使用randn(dimensions) * sqrt(sigma) + mu了高斯分布,其平均亩和方差西格玛.


恭喜,您已经生成了具有高斯分布的伪随机数。正态分布是它的同义词。
我可以从你的问题中得到的唯一其他可能的解释是你想要具有平均值!= 0和/或方差!= 1的东西。为此,只需执行mean + sqrt(var) * randn(X).
小智 5
您可以从rand()生成任何分布.
例如,假设你想为rayleigh dist生成100000个样本.这样做的方法是你反转那个特定函数的cdf.基本的想法是,因为cdf必须在0和1之间,我们可以找到通过输入cdf b/w 0和1的值来输出随机变量的值.所以对于rayleigh来说,它就是
for i = 1:100000
data(i) = (2*sigma^2 *(-(log(1 - rand(1,1)))))^.5;
end
Run Code Online (Sandbox Code Playgroud)
你可以为高斯分布做类似的事情.