从给定概率的正态分布中抽样随机数(Matlab)

时间:2014-02-26 08:35:35

标签: matlab random statistics montecarlo

如下面的代码所示,我目前正在从正态分布中生成随机数,并选择-3 * sigma和3 * sigma区间内的随机数。
但是,我现在想要生成数字,以便从-3 * sigma和3 * sigma区间之外选择数字的概率更高。例如。来自[-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

由于

0 个答案:

没有答案