基于密度函数生成矩阵

时间:2016-05-31 18:41:35

标签: matlab

我尝试根据密度函数生成 Transaction t1 = new Transaction(); Transaction t2 = new Transaction(); System.out.println(t1.id); // id 1 System.out.println(t2.id); // id 2 - { - 1}}随机数矩阵,例如

f(x)= 2x-4,2 <&lt; x&lt; 3; 0否则

所以根据我的理解,我必须首先找到累积密度函数,x 2 -4x,然后我必须将其反转,以便我可以使用rand函数。

这是我不明白的部分,如何获得反转功能

1 个答案:

答案 0 :(得分:0)

尝试与此方法类似的内容:https://stackoverflow.com/a/13914141/1011724

但是,您的PDF是连续的,因此您需要稍微调整一下。 cumsum部分成为您的CDF,sum(r >= ...部分成为从0rand的明确积分(这只是您的CDF,因为它评估为0 at x==0)所以(忽略你的限制)你得到了

X = @(x)x.^2 - 4x 

要生成随机矩阵,请转到X(rand(2,6))

要考虑到您的限制,您可以将整个函数乘以x > 2 & x < 3,但如果它大于3,那么虽然PDF为0,但CDF仍应为3 < sup> 2 - 4 = 5

X_limited = @(x)(x.^2 - 4x ).*(x > 2 & x < 3) + (x>=3)*5

如果您绘制(x > 2 & x < 3)图表,您会看到它是23之间的矩形函数,因此乘以它会使该窗口之外的任何内容0但是窗户内的任何东西都不变。同样,x >= 3是从x == 3开始的步进函数,因此它会将5添加到高于3的任何值,因为窗口函数将确保第一项为零当x大于3时,此步骤功能可确保所有5的值x大于3

现在你只需要在你的范围内生成随机数。假设它介于05

之间
x = rand(2,6)*5
X_limited(x)