从preconstructed非均匀分布随机整数

7视图(30天)
嗨,我是想从一个指定范围选择随机整数不是统一的。兰迪([1,间隔])的工作,但这是一个均匀分布,而我想改变分布的概率质量函数在每次迭代中,计算及accumarray。我道歉,如果这是不清楚但发布了下面的代码清晰。
x = [1, 2];
j = 1: T
如果市盈率(p + j) >兰德
x = [x, x(结束)+ 1];
其他的
及= accumarray (x(2:长度(x)) ', 1);及= pmf. /笔(及);
x = [x, x (randi ((2 x(结束)))));
非常感谢
2的评论
迈克尔
迈克尔 2012年12月4日
是的,及选择某个值的概率,因此从“x”应该改变在每一个迭代,例如:2的越多' x '越高机会选择2添加到“x”。谢谢你的回应。

登录置评。

接受的答案

Muthu Annamalai
Muthu Annamalai 2012年12月4日
一个众所周知的方法称为“盒子穆勒”方法。你产生一个均匀随机变量[0,1]索引到累积分布函数(PDF)的目标,然后用它来查找相应的概率区间。
你是访问PDF通过反相CDF。
像往常一样维基百科解释详细, http://en.wikipedia.org/wiki/Inverse_transform_sampling_method
4评论
约翰D 'Errico
约翰D 'Errico 2020年2月13日
编辑:约翰D 'Errico 2020年2月13日
interp1实际上是一个替代方法我可以提供。我甚至认为暗示它当我说有其他方式。使用interp1的唯一缺点是也许不那么明显的为什么,解决方案,当它是必要的调试代码下个月或者明年,有人可能会发现自己摸不着头/为什么你使用一个插值的工具。我认为离散化可能是代码的读者更清楚。
为什么?在我眼里,interp1推动问题的用户认为在一个连续的意义上,这就是插值用于解决经典。(然后细心的读者会发现interp1使用离散方法。)然而,离散化推动用户认为完全离散问题的意义。因此,它需要更少的精神飞跃看看是什么。
无论如何,我总是极力推荐记录所有的代码块。一行评论是免费的,如果这都是需要解释什么,如何以及为什么事情做了,可以节省一些大脑汗。
当然任何作品都是好的。

登录置评。

更多的答案(0)

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!