matlab 中怎样按概率产生随机数?
现在有三种波色A/B/C,出现的概率为40%、25%、35%,我现在想根据他们出现的概率,用RAND设计出一个随机数A/B/C,这个随机数是根据他们的概率的。谢谢大侠~...
现在有三种波色A/B/C,出现的概率为40%、25%、35%,我现在想根据他们出现的概率,用RAND设计出一个随机数A/B/C,这个随机数是根据他们的概率的。
谢谢大侠~ 展开
谢谢大侠~ 展开
展开全部
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
%本函数产生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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
采用轮盘赌法,把100看做一个轮盘,则产生1-40之间的数概率为40%,41到65之间的数概率为25,66到100之间的概率为35%。
追问
请问代码怎样写呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询