以给定概率从正态分布抽样随机数(Matlab)
如下面的代码所示,我目前正在从正态分布生成随机数,并选择-3 *西格玛和3 *西格玛间隔内的数。
但是,我现在想要生成数字,以便从-3 *西格玛和3 *西格玛间隔之外选择数字的概率更高。 例如,[-4 * sigma -3 * sigma]中的数字应该有35%的被选择概率,并且[3 * sigma 4 * sigma]的概率相同。
基本上,我会多次调用这个函数,并且想知道是否有一种方法可以让我从正态分布的“尾部”中选择更高比例的随机数,而不会实际改变正态分布的形状。
我被告知使用“拒绝采样算法”或“Metropolis-Hastings算法”来解决这个问题。 我正在努力理解如何实现。 有人能向正确的方向提供轻微的推动吗? 我在用着
N = pdf('Normal',136e9-(3*9.067e9):1e8:136e9+(3*9.067e9),136e9,9.067e9)
首先生成一个pdf
来绘制。 但是,我不确定我应该把哪个作为我的“目标分配”,我应该把它作为“提议的分配”。
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
谢谢
链接地址: http://www.djcxy.com/p/24821.html上一篇: Sampling random numbers from normal distribution with given probability (Matlab)
下一篇: Random vector a with elements from the uniform distribution in R