编程:MATLAB中先指定概率分布再产生随机数的方法

我的应用例子

可以到本站查看一个我使用的一个代码:【编程:MATLAB实现粒子二维随机运动轨迹

产生随机数的常用函数

rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) 另外: Matlab随机数生成函数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器

matlab中如何按照 给定的概率密度函数 产生随机数呢?

可以看一些关于舍选法,反变换法。

就是通过一些变换,将均匀随机数,变成一定概率密度的随机数。 主要还是反变换法,不过反变换法一般要求被积函数可积。

matlab 中怎样按概率产生随机数?

现在有三种波色A/B/C,出现的概率为40

a=randsrc(1,3,1:100) 这个函数的意思是产生一个1*3的随机数组,取值是从1到100等概率的。 设s为a的某个元素,你可以假定: 如果 s<=40 则 s’=A 如果 41<=s<=65 则s’=B 如果 66<=s<=100 则 s’=C 这样做可能比较麻烦,应该有直接实现以上功能的函数。

matlab 如何按一定概率取数组中的值

我这里有一个数组[1,2,3,4] ,有一个变量A要从这个数组中取值。A取1,2,3,4的概率分别为0.7,0.15,0.1,0.05。我如何按照这样的概率,随机生成100个A 思路是:你先产生100个随机数,然后看每一个随机数到底在哪个范围内(把0到1分为0到0.7、0.7到0.85、0.85到0.95、0.95到1四个区间,每个区间将对应一个数),然后给A赋值。 程序为:

[cc lang=”matlab”] A=zeros(1,100); x=rand(1,100); A(find(x<0.7))=1; A(find(x>=0.7))=2; A(find(x>=0.85))=3; A(find(x>=0.95))=4; [/cc]

如何在matlab中产生随机数?

已知产品的寿命的分布函数cdf为F(t)。若要用计算机来仿真它的失效事件,如何能用matlab来随机产生一个数,它的分布函数是F(t)?老板给的方法是产生一个服从均匀分布的随机数U~U[0,1],使t=G(u),其中G(u)是F(t)的反函数,然后可以证明t的分布函数是F(t)。但是如何产生一个服从均匀分布的随机数U~U[0,1]呢? 唉,这个帖子已经两年了,居然无人问津。马上要毕业了,又看到当年的帖子。自己回答一下吧。 使用蒙特卡洛仿真。产生一个服从均匀分布的随机数U~U[0,1],使t=G(u),其中G(u)是F(t)的反函数,然后可以证明t的分布函数是F(t)。均匀分布的随机数U~U[0,1]使用rand函数得到。

Matlab已知概率密度函数,怎么生成随机数啊?

1 calculate the cumulative function (Not the density function), it will be in range (0, 1) 计算累积分布函数(不是密度函数),其范围应在(0,1)之间的。 2 generate random number by ‘rand’, which will be (0, 1)  用rand函数生成随机数,也在(0,1)之间 3 e.g., one random number is 0.6, substitute it into the cumulative function, you will get one random number from your designated distrubiton 例如:若生成了一个随机数是0.6,我们用累积分布函数代替它,将会得到一个指定了分布概率的新的数。

Random number from any distribution can be generated this way 任意指定概率分布的随机数都可以用这种方法来生成。

一个程序

(原地址:http://meijiu2000.i.sohu.com/blog/view/112687031.htm

[cc lang=”matlab”] function y=GenRanNum1(n) min=-1; max=1; uper=1/(pi-2); for k=1:n x1= min + (max-min).*rand(1); x2=uper*rand(1); x3=(1-x1*x1)/(1+x1*x1)/(pi-2); while x2>x3 x1= min + (max-min).*rand(1); x2=uper*rand(1); x3=(1-x1*x1)/(1+x1*x1)/(pi-2); end y(k)=x1; end [/cc]

另一个程序

[cc lang=”matlab”] RN=rand;  if RN<=x1  y=1;  elseif RN>x1 && RN<=x2 y=2; elseif RN>x2 && RN<=x3 y=3; ...... elseif RN>x24 && RN<=x25 y=25; else y=26 end [/cc]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注