如下面的代码所示,我目前正在random
从中生成数字,Normal Distribution
并在-3*sigma
和3*sigma
间隔内选择数字。但是,我现在想生成数字,这样我更有可能从-3*sigma
and3*sigma
间隔之外选择数字。例如。来自的数字[-4*sigma -3*sigma)
应有35%
被选择的概率,且与相同[3*sigma 4*sigma)
。基本上,我将多次调用此函数,并且想知道是否有一种方法可以让我从正态分布的“尾巴”中选择更高比例的随机数,而实际上不改变正态分布的形状。我正在努力做到这一点。
function [new_E11, new_E22] = elasticmodulusrng()
new_E11 = normrnd(136e9,9.067e9,[1 1]);
new_E22 = normrnd(8.9e9,2.373e9,[1 1]);
while new_E11<=-3*9.067e9 && new_E11>=3*9.067e9
new_E11 = normrnd(136e9,9.067e9,[1 1]);
end
while new_E11<=-3*2.373e9 && new_E11>=3*2.373e9
new_E22 = normrnd(8.9e9,2.373e9,[1 1]);
end
谢谢
正如Jojo所指出的,这个问题没有多大意义:这不再是正态分布。
您可以做的是创建自己的概率密度函数pdf并从中提取。
例如,
N = pdf('Normal',-5:0.2:5,0,1);
为您提供具有良好分辨率的普通PDF。你可以改变它,说
Z = N;
Z(5:15)=3*Z(5:15);
Z(35:45)=3*Z(35:45);
并使用直接法,反演方法,或接受-拒绝方法的解释这里
FileExchange中有一个实现:http : //www.mathworks.com/matlabcentral/fileexchange/27590-simple-rejection-sampling
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句