自己编写产生随机数函数--MATLAB实现
来源:互联网 发布:手写alexnet网络结构 编辑:程序博客网 时间:2024/05/19 13:23
这学期选了《现代数字信号处理》这门课,全是信号的东东,本科完全没有接触过这个东东,听起来有点费劲,作业还是用matlab做,第一个作业就用到了随机数,本来matlab有自己带的产生随机数的函数,但是老师说要自己写一个函数,好吧,还是自己写一个吧:
各种上网找资料,首先找到了一个用汇编写的,比较牛,链接贴出来:
http://www.luocong.com/articles/show_article.asp?Article_ID=24
Matlab产生均匀分布的随机数:
一般我们用计算机产生的随机数都不是真正的随机数,称作伪随机数,但是计算方法合理的话,产生的伪随机数接近于真正的随机数,满足一般的需求。
均匀分布的随机数是其他随机数的基础,最长用的产生均匀分布随机数的方法是采用除留余数法。
模型如下:
y[n+1] = (y[n]*m+c) mod M;
这里的mod表示取余数,通俗的解释,就是用前一个随机数y[n]乘上一个权值w,加上一个增量c,对M取余数。
c和M都是非负的。
Matlab代码:
Matlab 产生正态(高斯)分布的随机数:
原理没太懂,直接写代码:
%产生一个N(0,1)正态分布随机数%采用筛选法,精度较高%其他方法可参阅《现代应用数学手册--概率统计与随机过程卷》清华大学出版社马振华主编%function y=riddling()function y=m_gauss()sign=0;while 1 x=rand(1,2);%产生两个[0,1]间均匀分布的随机数 v1=2*x(1)-1;v2=2*x(2)-1; s=v1^2+v2^2; if s<=1 a=sqrt(-2*log(s)/s); y=v1*a; sign=1; end if sign==1 break; endend
%产生n个N(a,b)正态分布随机数%其中a为均值,b为方差%function x=normal(a,b,n)function x=normal(a,b,n)m=48;%m应尽量大,m取12时近似程度已较好for i=1:n r=rand(1,m); x(i)=a+sqrt(b)*(sum(r)-m/2)/sqrt(m/12);end参考:
http://bbs.sjtu.edu.cn/bbstcon,board,MathTools,reid,1071206851.html
0 0
- 自己编写产生随机数函数--MATLAB实现
- Matlab产生随机数
- matlab 随机数的产生
- matlab产生随机数
- matlab 产生随机数
- MATLAB产生随机数
- matlab 产生随机数汇总
- MATLAB产生随机数
- MATLAB产生随机数
- Matlab中产生正态分布随机数的函数normrnd
- Matlab 中如何用rand函数产生相同随机数
- MATLAB中常用的产生随机数的几种函数
- 如何根据可以产生1-5随机数的函数自己产生1-7的随机数?
- Linux下c++调用自己编写的matlab函数:通过matlab引擎实现
- 调用自己编写的matlab函数
- Matlab 产生无重复随机数
- matlab产生随机数的方法
- matlab 产生随机数的方法
- 可重入型函数与不可重入型函数
- 设计模式之桥接模式
- EBS中Cycle Count(周期盘点)的Purge功能后台数据分析
- JavaMail发送邮件(普通邮件,html邮件以及附件邮件)
- Mat类型图像元素访问
- 自己编写产生随机数函数--MATLAB实现
- 关于升级后的_UpgradeReport_Files和Backup文件夹
- Tomcat配置虚拟目录
- 环境变量 DISPLAY
- Eclipse中Alt+/
- 关于私钥和公钥的认识
- cocos2dx用CCLayerMultiplex实现Tab选项卡
- 内联函数
- 三星Galaxy S4存在重大安全漏洞!黑莓:呵呵