我是靠谱客的博主 义气树叶,最近开发中收集的这篇文章主要介绍matlab 怎么表示随机数,MATLAB怎么生成一组和为定值的随机数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本帖最后由 kastin 于 2015-7-24 15:25 编辑

由于楼主生成的是3个随机数满足和为1,可以采用动态生成法:即先生成1个随机数x,然后生成一个1个0到1-x范围内的随机数y,最后生成一个0到1-x-y范围内的随机数即可。

当n比较大的时候,可以用拒绝法:即生成很多组n-1个随机数,然后分别用1减去他们的和,得到的数如果小于等于零,就舍去(拒绝);保留剩余大于0的那些n元组随机数。

补充资料:

接受-拒绝抽样(Acceptance-Rejection sampling)

原文链接:http://blog.csdn.net/xianlingmao/article/details/7768833

又简称拒绝抽样,直观地理解,为了得到一个分布的样本,我们通过某种机制得到了很多的初步样本,然后其中一部分初步样本会被作为有效的样本(即要抽取的分布的样本),一部分初步样本会被认为是无效样本舍弃掉。这个算法的基本思想是:我们需要对一个分布f(x)进行采样,但是却很难直接进行采样,所以我们想通过另外一个容易采样的分布g(x)的样本,用某种机制去除掉一些样本,从而使得剩下的样本就是来自与所求分布f(x)的样本。

它有几个条件:1)对于任何一个x,有f(x)<=M*g(x); 2) g(x)容易采样;3) g(x)最好在形状上比较接近f(x)。具体的采样过程如下:

1. 对于g(x)进行采样得到一个样本xi, xi ~ g(x);

2. 对于均匀分布采样 ui ~ U(a,b);

3. 如果ui<= f(x)/[M*g(x)], 那么认为xi是有效的样本;否则舍弃该样本; (# 这个步骤充分体现了这个方法的名字:接受-拒绝)

4. 反复重复步骤1~3,直到所需样本达到要求为止。

这个方法可以如图所示:

1343012077_5764.png

(说明:这是从其他地方弄来的图,不是自己画的,符号有些和文中不一致,其中pi(x) 就是文中的f(x),q(x)就是文中的 g(x) )

上述方法最早由von neumann 提出,所以又叫von neumann 取舍原则,证明过程见下面链接中的8-9页。

http://wenku.baidu.com/link?url=-3ZGtURi2hl2-Z6uduT5i5jkwbEGvKF2Dy4ldJHUgaPllLbU9atC5GGGMK1eCQIONY0FsDc62gPJiBY9D1VFqWE2J7-31vVX06J8h3t-yvC复制代码

9楼链接中的函数由于为了让n在取很大的值的时候能更有效率,所以选用的算法并不是上面拒绝法,而是一种直接生成的方法。作者说到,“This algorithm does not perform any rejection of solutions - all are generated so as to already fit within the prescribed hypercube。”

最后

以上就是义气树叶为你收集整理的matlab 怎么表示随机数,MATLAB怎么生成一组和为定值的随机数的全部内容,希望文章能够帮你解决matlab 怎么表示随机数,MATLAB怎么生成一组和为定值的随机数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部