博舍

1入门matlab数理统计随机数的产生(matlab程序) 生成随机数的程序

1入门matlab数理统计随机数的产生(matlab程序)

1.简述

    

一、常见分布的随机数的产生随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候。而matlab直接提供了产生随机数的通用函数,但针对不同的分布,函数形式会有所不同,但通用公式如下:命令:namernd(A,B,m,n)y=random(‘name’,A1,A2,A3,m,n)说明:对于namernd(A,B,m,n)函数,m和n表示产生随机数的矩阵大小,例如m=1,n=1就表示产生一个随机数;m=2,n=2就表示产生一个2*2的随机数矩阵,name表示函数名。下面表格列出了各种分布的随机数生成函数

函数名   调用形式   注释betarnd   betarnd(A,B,m,n)   参数为A,B的β分布随机数binornd   binornd(N,P,m,n)   参数为N,p的二项分布随机数chi2rnd   chi2rnd(N,m,n)   自由度为N的χ2分布随机数exprnd   exprnd(Lambda,m,n)   参数为Lambda的指数分布随机数frnd   frnd(N1,N2,m,n)   第一自由度为N1,第二自由度为N2的F分布随机数gamrnd   gamrnd(A,B,m,n)   参数为A,B的γ分布随机数geornd   geornd(P,m,n)   参数为P的几何分布随机数hygernd   hygernd(M,K,N,m,n)   参数为M,K,N的超几何分布随机数lognrnd   lognrnd(MU,SIGMA,m,n)   参数为MU,SIGMA的对数正态分布随机数nbinrnd   nbinrnd(R,P,m,n)   参数为R,P的负二项式分布随机数ncfrnd   ncfrnd(N1,N2,delta,m,n)   参数为N1,N2,delta的非中心F分布随机数nctrnd   nctrnd(N,delta,m,n)   参数为N,delta的非中心t分布随机数ncx2rnd   ncx2rnd(N,delta,m,n)   参数为N,delta的非中心卡方分布随机数normrnd   normrnd(MU,SIGMA,m,n)   参数为MU,SIGMA的正态分布随机数poissrnd   poissrnd(Lambda,m,n)   参数为Lambda的泊松分布随机数raylrnd   raylrnd(B,m,n)   参数为B的瑞利分布随机数trnd   trnd(N,m,n)   自由度为N的t分布随机数unidrnd   unidrnd(N,m,n)   离散型均匀分布随机数unifrnd   unifrnd(A,B,m,n)   (A,B)上连续型均匀分布随机数weibrnd   weibrnd(A,B,m,n)   参数为A,B的威布尔分布随机数 

2.代码及运行结果

%%二项分布随机数的产生clearall;r=binornd(6,0.8)R=binornd(6,0.8,4,5) %产生一个4*5的矩阵

%%泊松分布clearall;r=poissrnd(6)   %泊松分布R=poissrnd(6,3,3)  %产生一个3*3的矩阵%% 

 

 

%指数分布

clearall;r=exprnd(5)    %指数分布R=exprnd(5,5,5)  %产生一个5*5的矩阵%% 

 

%均匀分布  连续型 

clearall;r=unifrnd(1,5)       %均匀分布 1到5之间R1=unifrnd(1,5,3,3)    %产生一个3*3的矩阵R2=unifrnd(1,5,[33])%% 

 

%离散型均匀分布

 

clearall;r=unidrnd(6)     %离散型均匀分布R1=unidrnd(6,3,3)   %产生一个3*3的矩阵R2=unidrnd(6,[33])

 

%% 正态分布 应用最广 非常重要clearall;r=normrnd(0,1)R1=normrnd(0,1,[34]) %产生一个3*4的矩阵 均值为0 标准差为1R2=normrnd(2,4,[34])  

 

笔记——C++生成随机数

一、C++生成随机数过程

        计算机所产生的随机数其实并不是真正随机的,而是伪随机的。当我们在使用rand()生成随机数时得到的实际上是从由随机数种子生成的一个数字序列中生成的一个数,该数字序列的长度一般是65535。也就是说一个固定的随机数种子生成的数字序列长度一般是65535,当我们在这个数字序列中生成随机数时,如果已经得到了65535个随机数那么接下来生成的随机数会和之前的随机数重复。简单点说就是如果不改变随机数种子的话,那么生成随机数的过程就是每次在一个固定的数字序列中拿出一个数(而且经过我多次试验发现每次还都是按顺序生成的,即有规律可循)。

二、使用cstdlib库

第一步:使用srand()设置随机数种子值(如果不设置的话会默认随机数种子为1即srand(1))。

用法:srand(unsignedintseed)//初始化随机数发生器通常用srand(time(0))来初始化,time(0)为1970年1月1日到现在的秒数,这样在每次运行代码时可以使数字序列都不相同。

第二步:使用rand()产生随机数。

用法:rand()//随机数发生器产生一定范围随机数的通用表示公式:(1)要取得[a,b)的随机整数:(rand()%(b-a))+a;(2)要取得[a,b]的随机整数:(rand()%(b-a+1))+a;(3)要取得(a,b]的随机整数:(rand()%(b-a))+a+1;//通用公式:a+rand()%n:其中a是范围的起始值,n是整数的范围。(4)要取得a到b之间的随机整数的另一种方式:a+(int)b*rand()/(RAND_MAX+1)(5)要取得0~1之间的浮点数:rand()/double(RAND_MAX)三、使用random库

    在C++11以前,C和C++都使用相同的方式来生成随机数。而C++11提供了随机数库,其中包括随机数引擎类和随机数分布类。

(1)随机数引擎类//一般用default_random_engine类产生随机非负数(不推荐直接使用)#include#include#includeusingnamespacestd;intmain(){default_random_enginee;e.seed(time(0));for(inti=0;i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇