Matlab中使用分布的随机数
我需要创建一个函数,该函数返回一个长度为n的向量,其值范围为0到1(或类似值,.01到.99也可以),该向量遵循一个具有指定平均mu和sd的正态分布。也就是说,向量中约68%的值落在用户指定平均值的±1 s.d.范围内。因此,函数的输入为n,mu,s.d.,并返回一个向量Matlab中使用分布的随机数,matlab,random,distribution,probability,gaussian,Matlab,Random,Distribution,Probability,Gaussian,我需要创建一个函数,该函数返回一个长度为n的向量,其值范围为0到1(或类似值,.01到.99也可以),该向量遵循一个具有指定平均mu和sd的正态分布。也就是说,向量中约68%的值落在用户指定平均值的±1 s.d.范围内。因此,函数的输入为n,mu,s.d.,并返回一个向量 非常感谢您的帮助。谢谢使用randn: v = randn(1,n)*sd+mu; 该函数将返回一个1×n矩阵,其中包含从标准正态分布中提取的伪随机值 通过将其乘以sd并加上mu,将得到一组正态分布的数字,平均值mu和标准偏
非常感谢您的帮助。谢谢使用
randn
:
v = randn(1,n)*sd+mu;
该函数将返回一个1×n矩阵,其中包含从标准正态分布中提取的伪随机值
通过将其乘以sd并加上mu,将得到一组正态分布的数字,平均值
mu
和标准偏差sd
,也许我误解了你的要求,你不想要随机数,但正态分布曲线的计算值介于0和1之间
高斯方程或正态分布为:
x = (1:n)/n;
y = 1/(sigma*sqrt(2*pi)).*exp(-((x-mu).^2)/(2*sigma^2));
因为你想要一个长度为n的向量,所以x也应该是这个长度。因此,您可以如上所述(从1/n开始,以1结束)。然后计算这些值的正态分布。+1另请参见
normrnd
(统计工具箱),它基本上调用randn
,谢谢,但我没有统计工具箱(或者我不知道如何启动它)。您使用的代码不适合0到1的数字范围(例如:hist(randn(1500)*2+.5);),我正在尝试避免使用黑匣子。这是我现在拥有的几乎可以工作的代码,但问题是我无法为linspace找到合适的边界<代码>xsigma=1;xmu=.5*6*xsigma;x=linspace(0,6*xsigma,1000);y=(xsigma*sqrt(2*pi))^-1*exp(-(x-xmu)。^2)/(2*xsigma^2));图(x/(6*xsigma),y)我原以为6西格玛可以做到,但事实并非如此。我想捕获(0,1)中98%的曲线。请参见编辑。如果使用的平均值为.5,标准值为2,则会获得许多超出0到1范围的值。如果你想要98%的值在0到1之间,你应该使用平均值0.5和比2小得多的标准差(尝试0.1)。我看到了,这不完全是一样的。范围必须在(0,1)之内,并且必须包含大约98%的数据。见下面我的评论。