【问题标题】:Random variable generation with a specific mass function in MatlabMatlab中具有特定质量函数的随机变量生成
【发布时间】:2018-02-21 10:34:14
【问题描述】:

我必须编写一个计算机程序,当给定一个概率质量函数时 {pj , j = 1, . . . , n} 作为输入,给出随机值作为输出 具有此质量函数的变量。这些是我关于这个问题的唯一信息。我试过这个

%f(x)=pdf 
%F(x)=cdf 
%X=tixaia metavliti 

f(x);
X;
F(x)= cumsum(f(x));

%firstly we want F(x) to have unique values
%we remove the non-unique values from cdf and X
[F(x),mask] = unique(F(x));
X = X(mask);

%apply inverse interpolation
%so we can produce random value X from the cdf

u = rand;

projection = interp1( F(x),X,u );

该代码是否可以解决我的问题?谁能帮帮我?

【问题讨论】:

  • 试图澄清你的意思;给你一个任意的 pmf,并要求从中采样 N 个数据点(无需替换),有效地生成符合该 pmf 的 N 个观察值的随机样本?
  • @TasosPapastylianou 是的,就是这样。我以前从未使用过Malab,对它也不是很熟悉。你能帮我吗?
  • 在 SO 中要求人们为您编写代码往往是不受欢迎的(不是批评,就是这样)。但这里有一个起点:matlabtricks.com/post-44/… 尝试理解获取累积分布函数的“技术”,并从该技术开始进行逆变换。然后尝试编写自己的代码。如果您对编写的特定代码有问题,那么 SO 社区通常很乐意提供帮助。
  • @TasosPapastylianou Σ'ευχαριστώ πολύ,我会研究链接并尝试应用它!!!!

标签: matlab random probability


【解决方案1】:

这是一个示例,它根据定义的概率从向量 (7 8 9 10) 中采样 2 个值。它使用统计工具箱。

R = randsample([7 8 9 10],2,true,[0.15 0.35 0.35 0.15])

如果您想自己编写代码,Tasos 会将您指向正确的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多