如何用matlab产生一组固定概率的数字
首先要确定需要的是什么分布的随机数,也就是要知道随机数要符合的概率密度分布函数f(x)的定义,然后求其积分函数F(x),然后求F(x)的反函数
得到反函数的定义之后,利用函数rand产生一系列(0,1)之间的随机数代入反函数中计算得到的结果数列就符合原来f(x)的分布。
这种方法适用于,能够容易得到概率密度分布函数的积分函数的反函数的解析表达式的情况。
下面以指数分布为例给出代码和验证图像
指数分布的概率密度函数形式为
f(x)= λexp(-λx) (x>0)
0 (x<=0)
其中λ > 0是分布的一个参数
指数分布的累积分布函数
F(x)= 1-exp(-λx) (x>0)
=0 (x<=0)
指数分布的累积分布函数的反函数是
G(y)= -log(1-y)/λ (0<y<1)
使用直接抽取的方法 先产生 [0,1]间的随机数列
利用累积分布函数的反函数,得到的结果就是符合指数分布的序列
N=10000; %产生随机数的个数lambda=3; %参数λy=rand(1,N); %生成N个0,1间均匀分布随机数x=-log(1-y)/lambda; %生成指数分布随机数 [n,xout]=hist(x,30); %分区间统计随机数出现概率nn=n/N/mean(diff(xout));bar(xout,nn,1);hold on; %画图验证随机数是否符合概率密度函数plot([0 xout],lambda*exp(-lambda*([0 xout])),'r');hold off;xlabel('x');ylabel('p(x)');
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 威布尔分布的随机数生成器
NumberOfDigits = 1000; % 假设有1000个数字Result = rand(NumberOfDigits, 1); % 产生包含1000个随机数[0,1]的数组
Result(Result <= 0.1) = 4; % 小于0.1的都改成4,这样4的概率是10%,结果是Result包含(0.1,1]的数值以及4.
Result(Result <= 0.25) = 3; % 小于0.25的都改成3,结果是Result包含(0.25,1]以及3和4。以下类推。
Result(Result <= 0.35) = 2;
Result(Result < 1) = 1;
% 最后Result就是你需要的
你知道有个产生0到1之间均匀分布随机数的函数吧。
编个程序,先用他产生一个随机数,记为r,如果r大于0小于等于0.65,s=1,如果r大于0.65小于等于0.75,s=2,如果r大于0.75小于等于0.9,s=3,如果r大于0.9小于等于1,s=4。
s就符合你的条件
matlab 中怎样按概率产生随机数?
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 如何生成指定分布的随机数?
=== function y=dis_rand(x,p,n)dis_rand 产生离散分布随机数 x:可能取值 p:取值概率 n:拟生成随机数的数目 cp=cumsum(p);y=zeros(1,n);for i=1:n y(i)=x(sum(cp<=rand(1))+1);end 算法说明:利用matlab中的rand函数获取区间[0,1]上均匀分布的随机数,根据希望的分布律把...
matlab有没有命令直接生成只有0和1的矩阵,0和1出现的概率分别为0.5.
有,可以用randi函数,例如生成五阶矩阵:randi(2,5)-1 ---生成的矩阵中都是0和1,且符合均匀分布。
怎么用matlab产生一个平均分布的随机数
通过灵活运用这些随机数生成函数,用户可以方便地在MATLAB中进行各种概率统计分析和随机模拟实验。需要注意的是,在实际应用中,生成的随机数序列往往需要具有一定的随机性和独立性。为此,MATLAB还提供了控制随机数生成器的选项,用户可以通过设置随机数种子或选择不同的随机数生成算法,来确保生成的随机数具有...
matlab如何实现对一组数据的统计计算?
代码如下:A=1:1000;RESULT=A(floor(A.\/100).^bai2+(floor((A-floor(A.\/100)*100).\/10).^2)==mod(A,10).^2)。诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、...
如何用matlab画一组数据的概率密度曲线
clc;clear x=randn(1,1000);hist(x)[mu,sigma] = normfit(x)d=pdf('norm',x,mu,sigma);figure plot(x,d,'.')
matlab 已知几组数据,如何绘出每组数据的概率密度函数,并把这几组...
matlab 已知几组数据,如何绘出每组数据的概率密度函数,并把这几组的概率密度函数拟合成一个曲面 35 1、本人纯属matlab新手,上网查了概率密度函数用ksdensity,但得到的几个曲线如何拟合成曲面?2、尝试过用[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y))... 1、本人纯属...
如何用matlab产生一0、1随机数列
1、首先启动matlab,新建一个函数文件。2、在弹出的编辑窗口中输入代码。3、保存该函数,注意文件命名要与函数名相同。4、文件保存的位置应该与搜索路径相同,否则使用该函数时将会因为找不到该函数文件而出错。5、最后再命令行窗口中输入命令,get01(m,n)就可以产生m行n列的随机0-1矩阵了。
matlab中概率情况怎么编程?
随机变量的累积概率值(分布函数值)1 通用函数计算累积概率值 命令 通用函数cdf用来计算随机变量的概率之和(累积概率值)函数 cdf 格式 说明 返回以name为分布,随机变量X≤K的概率之和的累积概率值,name的取值见表4-1 常见分布函数表 2 专用函数计算累积概率值(随机变量的概率之和)命令 二项分布的累积...
用matlab画出概率密度分布图
方法和详细的操作步骤如下:1、第一步,在matlab的主界面中,将出现相关窗口,见下图,转到下面的步骤。2、第二步,完成上述步骤后,直接通过命令行窗口输入初始化内容,见下图红框处,转到下面的步骤。3、第三步,完成上述步骤后,需要根据图标的输入绘制图像,见下图红框处代码,转到下面的步骤。4、...