我的应用例子
可以到本站查看一个我使用的一个代码:【编程: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%、25%、35%,我现在想根据他们出现的概率,用RAND设计出一个随机数A/B/C,这个随机数是根据他们的概率的。
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”]
%参考文献 任意概率分布的伪随机数研究和实现,朱晓玲,姜 浩,计算机技术与发展 Vol. 17 No. 12 Dec. 2007
function y=GenRanNum1(n)
%本函数产生n个指定概率分布的随机数,本例中的
%概率密度函数为f(x)=(1-x*x)/(1+x*x)/(pi-2) |x|<1
min=-1;% 概率密度区间的左边界
max=1; %概率密度区间的右边界
uper=1/(pi-2);%概率密度函数的上确界
%rand(‘state’,0);sum(100*clock)
for k=1:n
x1= min + (max-min).*rand(1);
x2=uper*rand(1);
x3=(1-x1*x1)/(1+x1*x1)/(pi-2); %此处为指定的概率密度函数f(x)的位置
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; %产生一个0到1的随机数.
if RN<=x1 %产生数1的概率是(x1-0)/1,
y=1; %即线段0-x1与线段0-1的比例.下同.
elseif RN>x1 && RN<=x2%产生数2的概率是(x2-x1)/1.
y=2;
elseif RN>x2 && RN<=x3
y=3;
......
elseif RN>x24 && RN<=x25
y=25;
else
y=26
end
%因为产生各数字的概率不同,根据具体概率数值设定x1,x2,...,x25的大小.
[/cc]