《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
楼主: chengyameng123
收起左侧

[提问] 已知某概率密度函数,如何产生一服从该分布的随机数

  [复制链接]
发表于 2011-6-14 16:46:36 | 显示全部楼层
谢老师,书里有没有介绍:产生服从指定多元概率密度函数的随机向量。
发表于 2011-7-14 15:45:25 | 显示全部楼层
买来看了,没有
发表于 2012-4-30 11:29:53 | 显示全部楼层
我自己想了个办法,给你一个具体的例子吧
要求生成满足概率分布为f(x)=sin(x)^2/(x)^2*1/pi的随机数列

while i<n    % n为你要生成的随机数个数 %
      x1=2*(rand(1)-0.5)*8;  % 这个地方根据自己函数需要设定,但生成的 x1 必须在定义域内均匀分布  %
      yy=sin(x1)^2/(x1)^2*1/pi;  %  这是一个具体的概率密度函数的例子,你可以代入自己的概率密度函数 %
      if  subs(yy)>rand(1);   %  这里是这个办法的关键 %
          x(i,1)=x1;
          i=i+1;
      else
          i=i;
      end
end

得到的 x 即是一个满足给定的概率密度分布的一维数列
回复 支持 1 反对 0

使用道具 举报

发表于 2012-5-5 20:38:05 | 显示全部楼层
xiezhh 发表于 2011-4-18 22:34
把参数的值直接代入密度函数表达式中即可。
a = 1; b = 2; fun = 'a+b*x' 和fun = '1+2*x'不是一回事。

谢老师,您好:
      我看了您的这个代码,我想改成产生拉普拉斯概率密度函数的随机信号,但会出现上楼同样的错误,我已经把均值和方差代入到概率密度函数里面了,单步执行到这句y(i) = fsolve(funcdf, xm, options);就出现上述同样的错误,希望您有空的时候看一下,期望得到你的指导,谢谢您。这是拉普拉斯分布概率密度函数
y = exp(-sqrt(2) * (abs(x - mu))./sigma) ./ (sqrt(2) .* sigma)。
发表于 2012-5-6 15:09:23 | 显示全部楼层
will_m 发表于 2012-5-5 20:38
谢老师,您好:
      我看了您的这个代码,我想改成产生拉普拉斯概率密度函数的随机信号,但会出现上楼 ...
  1. >> y = 'exp(-sqrt(2) * (abs(x - 1))./1) ./ (sqrt(2) .* 1)';
  2. >> crnd(y,[-1000,1000],10,1)
复制代码
发表于 2012-5-6 23:30:42 | 显示全部楼层
xiezhh 发表于 2012-5-6 15:09

谢谢老师,运行通过了,调用crnd函数对概率密度函数的取值区间有要求吗?
发表于 2012-5-7 09:25:14 | 显示全部楼层
will_m 发表于 2012-5-6 23:30
谢谢老师,运行通过了,调用crnd函数对概率密度函数的取值区间有要求吗?

取值区间只能是有限区间,你可以尝试修改程序,让其支持无限区间。
发表于 2012-5-7 11:57:39 | 显示全部楼层
xiezhh 发表于 2012-5-7 09:25
取值区间只能是有限区间,你可以尝试修改程序,让其支持无限区间。

嗯,谢谢老师。
发表于 2012-5-12 23:00:58 | 显示全部楼层
will_m 发表于 2012-5-7 11:57
嗯,谢谢老师。

谢老师,您好,又要麻烦您了,我现在得到的一组数据是服从拉普拉斯分布的,但是不知道它的均值和方差,怎么才能拟合出来均值和方差呢?在论坛里面搜了很多,好像要用到fminsearch函数,这个函数怎么用呢?
发表于 2012-5-29 20:39:00 | 显示全部楼层
老师,我把我的问题写在你的留言板里了,请您帮我看看,麻烦了……
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-12-1 10:29 , Processed in 0.048589 second(s), 9 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表