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

2024年11月23日 08:26
有3个网友回答
网友(1):

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
这样做可能比较麻烦,应该有直接实现以上功能的函数。
你可以查一下。
我也是初学者,共同学习,望采纳

网友(2):

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

网友(3):

采用轮盘赌法,把100看做一个轮盘,则产生1-40之间的数概率为40%,41到65之间的数概率为25,66到100之间的概率为35%。