matlab中具有高斯和均匀分布的随机数

Yus*_*sef 5 matlab normal-distribution gaussian uniform-distribution

我想在matlab中生成高斯和均匀分布的数字.我知道这个功能 randi,rand()但所有这些都是正常(高斯)分布.如何在均匀分布中生成随机数?

sup*_*pyo 14

使用rand(dimensions)一个均匀分布在0和1之间.

使用randn(dimensions) * sqrt(sigma) + mu高斯分布,其平均和方差西格玛.

统一分配

正态分布


Jon*_*nas 7

randn是生成高斯分布式变量(randirand产生均匀分布的变量)的函数.

  • 是.通常意味着"高斯".你想要rand和randn,正如其他人所说的那样. (3认同)

mmg*_*mgp 5

恭喜,您已经生成了具有高斯分布的伪随机数。正态分布是它的同义词。

我可以从你的问题中得到的唯一其他可能的解释是你想要具有平均值!= 0和/或方差!= 1的东西。为此,只需执行mean + sqrt(var) * randn(X).

  • 您需要查找书籍或其他来源。你读过我回答的第一句话了吗?它们是同义词,即它们是同一件事。 (2认同)
  • 好的,通过您已经发布的功能获得了“统一”。然后你要求“正常”和“高斯”,它们是同一件事。所以你已经知道如何生成“uniform”和“normal”/“gaussian”,还剩下什么? (2认同)

小智 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)

你可以为高斯分布做类似的事情.