如何在MATLAB中使用randn生成指定均值和标准差的随机数数组?
如何用MATLAB的randn()生成符合要求的数组
完全可以实现,randn()本身生成的是**标准正态分布(均值0,标准差1)**的数组,通过简单的线性变换就能得到你需要的偏差分布,具体步骤如下:
生成满足偏差要求的数组:
偏差需要均值为0、标准差为n/10,直接对randn()的输出做缩放即可:deviations = (n/10) * randn(N, 1);叠加标称值得到最终结果:
将偏差数组与标称值n相加,得到每个元素相对于n满足偏差要求的数组:result = n + deviations;
完整示例代码
% 自定义参数 N = 150; % 任意正整数 n = 7.8; % 任意整数或浮点数 % 生成目标数组 deviations = (n/10) * randn(N, 1); target_array = n + deviations; % 可选:验证偏差的统计特性 bias_mean = mean(target_array - n); % 结果应接近0 bias_std = std(target_array - n); % 结果应接近n/10
原理说明
randn()不直接支持传入均值和标准差参数,但正态分布的线性变换具有可扩展性:若X是标准正态分布($\mu=0, \sigma=1$),则a*X + b会成为均值为b、标准差为a的正态分布。这里我们需要的偏差是$\mu=0, \sigma=n/10$,所以取a=n/10、b=0生成偏差,再叠加标称值n就得到了最终数组。
内容的提问来源于stack exchange,提问作者Jonathan Frutschy
相关产品推荐
相关产品推荐

