我通过MATLAB在
中生成了经验累积分布函数x = [1, 1.2, ..., 1]
[myECDF, xi] = ecdf(x);
现在我想用这个ECDF作为绘制一组随机数的基础。例如,我想做这样的事情:
y = random(myECDF, 10); // drawing 10 random numbers from ECDF
这在MATLAB中是否可行?
答案 0 :(得分:3)
您可以使用反向CDF方法。生成0到1之间均匀分布的随机变量,并将它们视为CDF输出。然后使用您的经验分布找到相应的值。
function my_x = my_random(myECDF, xi, N)
% Generate N uniformly distributed samples between 0 and 1.
u = rand(N,1);
% Map these to the points on the empirical CDF.
my_x = interp1(myECDF, xi, u, 'linear');
end