概述
matlab中关于随机数的产生有3种库函数,下面我们来看看它们的形式:
1、rand(…)
它是生成0~1之间(开环,不包含0和1两个数)均匀分布的伪随机数,也就是无穷次试验其中每个数产生的概率是一样的。
它的函数格式如下:
<span style="color:#000000"><code> R = rand(N) % 生成N×N的矩阵随机数,其中每个元素位于<span style="color:#006666">0</span>~<span style="color:#006666">1</span>之间
R = rand([M,N,P,<span style="color:#000088">...</span>]) % 生成M×N×P×<span style="color:#000088">...</span>的矩阵随机数
R = rand(M,N,P,<span style="color:#000088">...</span>) % 同上,中括号不是必须
R = rand(<span style="color:#000088">...</span>, CLASSNAME) % 生成CLASSNAME类型的随机数,如 <span style="color:#009900">'double'</span> or <span style="color:#009900">'single'</span> </code></span>
- 1
- 2
- 3
- 4
例如生成double类型的5×3均匀分布的0到1间随机数:
<span style="color:#000000"><code>R = <span style="color:#000088">rand</span>(<span style="color:#006666">5</span>,<span style="color:#006666">3</span>,<span style="color:#009900">'double'</span>);</code></span>
- 1
同理,我们想要生成100个位于[a,b]间的数据可表示为:
<span style="color:#000000"><code>R = <span style="color:#006666">a</span> + (b-<span style="color:#006666">a</span>).*rand(<span style="color:#006666">100</span>,<span style="color:#006666">1</span>)<span style="color:#880000">;</span></code></span>
- 1
2、randi(…)
randi(N) 是生成(0,N]间均匀分布的伪随机数,并且数都是整数,所以每个数是位于1到N之间。它的表达形式有以下几种:
<span style="color:#000000"><code>R = randi(iMax) % 生成<span style="color:#006666">1</span>:iMax之间的均匀分布随机数
R = randi(iMax,m,n) % 生成m×n的<span style="color:#006666">1</span>:iMax之间的均匀分布随机数
R = randi([iMin,iMax],m,n) % 生成m×n的iMin:iMax之间的均匀分布随机数</code></span>
- 1
- 2
- 3
例如:
<span style="color:#000000"><code>R1 = randi(<span style="color:#006666">10</span>,<span style="color:#006666">5</span>,<span style="color:#006666">1</span>); % 生成<span style="color:#006666">5</span>×<span style="color:#006666">1</span>的<span style="color:#006666">1</span>:<span style="color:#006666">10</span>之间随机数
R2 = randi([<span style="color:#006666">10</span>,<span style="color:#006666">20</span>],<span style="color:#006666">2</span>,<span style="color:#006666">3</span>); % 生成<span style="color:#006666">2</span>×<span style="color:#006666">3</span>的<span style="color:#006666">10</span>:<span style="color:#006666">20</span>之间随机数</code></span>
- 1
- 2
3、randn(…)
有时候我们希望生成的随机数是呈现正态分布的,而不是随机分布,这时候我们就需要使用randn函数了。它生成的随机数整体概率为正态分布,均值为0,方差为1。也就是说生成的数中出现0的概率最大,而越往无穷或者负无穷概率越小,但是出现的随机数可能为所有实数,只不过出现的概率不同。它的格式如下:
<span style="color:#000000"><code>R = randn(<span style="color:#000088">N</span>) % 生成<span style="color:#000088">N</span>×<span style="color:#000088">N</span>个正态分布的随机数
R = randn(M,<span style="color:#000088">N</span>) % 生成M×<span style="color:#000088">N</span>个正态分布的随机数</code></span>
- 1
- 2
例如:
<span style="color:#000000"><code>R =<span style="color:#009900"> randi(3); % 生成3×3的正态分布的随机数</span></code></span>
- 1
4、稳定的重启分布rng
这里我们来看一下如何让每次程序运行生成的随机数都一样,主要借助的是rang函数,格式如下:
<span style="color:#000000"><code>rng(<span style="color:#009900">'default'</span>);
R = <span style="color:#4f4f4f">rand</span>(<span style="color:#006666">1</span>,<span style="color:#006666">5</span>); <span style="color:#880000">% 每次程序运行生成恒定的1×5随机数</span></code></span>
- 1
- 2
此外还有生成同样分布的表达方式:
<span style="color:#000000"><code>s = rng;
R1 = <span style="color:#4f4f4f">rand</span>(<span style="color:#006666">1</span>,<span style="color:#006666">5</span>);
rng(s);
R2 = <span style="color:#4f4f4f">rand</span>(<span style="color:#006666">1</span>,<span style="color:#006666">5</span>); <span style="color:#880000">% R1和R2随机数一样</span></code></span>
- 1
- 2
- 3
- 4
个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
转载请注明出处:http://blog.csdn.net/fx677588/article/details/72811673
最后
以上就是温暖铅笔为你收集整理的matlab生成随机数的rand、randi和randn三种形式的全部内容,希望文章能够帮你解决matlab生成随机数的rand、randi和randn三种形式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复