我是靠谱客的博主 傲娇电源,最近开发中收集的这篇文章主要介绍matlab源知识库,MATLAB產生隨機數,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(1)用計算機產生的是“偽隨機數”。用投色子計數的方法產生真正的隨機數 , 但電腦若也這樣做 , 將會占用大量內存 ; 用噪聲發生器或放射性物質也可產生真正的隨機數 , 但不可重復 . 而用數學方法產生最適合計算機 , 這就是周期有限 , 易重復的 ” 偽隨機數 ”

matlab里和隨機數有關的函數:

betarnd 貝塔分布的隨機數生成器

binornd 二項分布的隨機數生成器

chi2rnd 卡方分布的隨機數生成器

exprnd 指數分布的隨機數生成器

frnd f分布的隨機數生成器

gamrnd 伽瑪分布的隨機數生成器

geornd 幾何分布的隨機數生成器

hygernd 超幾何分布的隨機數生成器

lognrnd 對數正態分布的隨機數生成器

nbinrnd 負二項分布的隨機數生成器

ncfrnd 非中心f分布的隨機數生成器

nctrnd 非中心t分布的隨機數生成器

ncx2rnd 非中心卡方分布的隨機數生成器

normrnd 正態(高斯)分布的隨機數生成器,normrnd(a,b,c,d):產生均值為a、方差為b大小為cXd的隨機矩陣

poissrnd 泊松分布的隨機數生成器

rand:產生均值為0.5、幅度在0~1之間的偽隨機數,rand(n):生成0到1之間的n階隨機數方陣,rand(m,n):生成0到1之間的m×n的隨機數矩陣

randn:產生均值為0、方差為1的高斯白噪聲,使用方式同rand

注:rand是0-1的均勻分布,randn是均值為0方差為1的正態分布

randperm(n):產生1到n的均勻分布隨機序列

raylrnd 瑞利分布的隨機數生成器

trnd 學生氏t分布的隨機數生成器

unidrnd 離散均勻分布的隨機數生成器

unifrnd 連續均勻分布的隨機數生成器

weibrnd 威布爾分布的隨機數生成器

以下介紹利用Matlab產生均值為0,方差為1的符合正態分布的高斯隨機數。

我們利用的函數為normrnd(a,b,c,d):產生均值為a、標准為b大小為cXd的隨機矩陣,它有如下三種參數形式:

R=normrnd(μ,σ)

R=normrnd(μ,σ):生成服從正態分布(μ參數代表均值,σ參數代表標准差)的隨機數。輸入的向量或矩陣μ和σ必須形式相同,輸出R也和它們形式相同。標量輸入將被擴展成和其它輸入具有相同維數的矩陣。

R=normrnd(μ,σ,m)

R=norrmrnd(μ,σ,m):生成服從正態分布(μ參數代表均值,σ參數代表標准差)的隨機數矩陣,矩陣的形式由m定義。m是一個1×2向量,其中的兩個元素分別代表返回值R中行與列的維數。

R=normrnd(μ,σ,m,n)

R=normrnd(μ,σ,m,n): 生成m×n形式的正態分布的隨機數矩陣。其中μ為均值,σ為標准方差,m、n為矩陣大小;

R = normrnd(0,1,4,4) %產生4×4的標准正態分布矩陣

R =

0.5377 0.3188 3.5784 0.7254

1.8339 -1.3077 2.7694 -0.0631

-2.2588 -0.4336 -1.3499 0.7147

0.8622 0.3426 3.0349 -0.2050

var(R) %默認方差公式

ans =

3.0868 0.6085 5.1253 0.2465

var(R,0) %默認方差公式(N-1)

ans =

3.0868 0.6085 5.1253 0.2465

var(R,1) %方差公式(N)

ans =

2.3151 0.4564 3.8440 0.1849

var(R,0,1) %列操作,第二參數為方差方式,第三參數為行、列標記

ans =

3.0868 0.6085 5.1253 0.2465

var(R,0,2) %行操作,第二參數為方差方式,第三參數為行、列標記

ans =

2.3549

3.3782

1.6184

2.0146

var(R’) %check the ans

ans =

2.3549 3.3782 1.6184 2.0146

var(R(:)) %矩陣所有元素的方差

ans =

2.6020

介紹rand產生相同隨機數的方法:

隨機數的產生需要有一個隨機的種子,因為用計算機產生的隨機數是通過遞推的方法得來的,必須有一個初始值。

用同一台電腦,且在初始值和遞推方法相同的情況下,可以產生相同的隨機序列

(1) rand:產生均值為0.5、幅度在0~1之間的偽隨機數

(2) randn:產生均值為0、方差為1的高斯白噪聲

(3) randperm(n):產生1到n的均勻分布隨機序列

(4) normrnd(a,b,c,d):產生均值為a、方差為b大小為cXd的隨機矩陣

還有很多的擴展函數,不再一一列出。不過他們都調用的是rand或者randn函數,由此可見在matlab里rand和randn是產生隨機數的關鍵所在。

有了rand和randn就可以產生輕松產生均勻分布和正態分布的隨機數了

(1)產生在[a,b]區間服從均勻分布隨機序列的方法

(b-a)*rand(m,n)+a

3*rand(2)+2

ans =

2.8166 2.0458

2.5964 4.2404

(2)產生服從正態分布的隨機數

randn(‘state’,2)

a=normrnd(0,1,1,6)

a =

1.7491 0.1326 0.3252 -0.7938 0.3149 -0.5273

randn(‘state’,2)

b=randn(1,6)

b =

1.7491 0.1326 0.3252 -0.7938 0.3149 -0.5273

randn(‘state’,2)

c=randn(2,3)

c =

1.7491 0.3252 0.3149

0.1326 -0.7938 -0.5273

d=randn(2,3)

d=

0.9323 -2.0457 1.7411

1.1647 -0.6444 0.4868

mean(a)

ans =

0.2001

randn(1,2)

ans =

1.0488 1.4886

randn(1,2)

ans =

1.2705 -1.8561

上邊幾個典型的例子可以看出:

(1)如果不設置種子,那么種子會“隨機”變化。每次使用randn就會得到不同的結果(c和d)

(2)種子相同時可以得到相同的結果,如果是矩陣那么只是將產生的隨機數按列重構(a、b、c)

(3)randn無法准確保證均值為0,小樣本的時候尤為明顯。去均值后可以嚴格保證均值為0,但是個人覺得意義不大。

(4)在不同的計算里得到的結果也可能有差別,特別是不同的操作系統。大家可以試一下這個語句

randn(‘state’,2);randn(1,6)看看結果,我電腦每次都一樣的

或者:

使用rng保留生成器設置

對於rand函數——rand(‘seed’,x),rand(‘state’,x),rand(‘twsier’,x);

對於randn——randn(‘seed’,x),randn(‘state’,x),randn(‘twsier’,x);

可查看萬能的help

最后

以上就是傲娇电源为你收集整理的matlab源知识库,MATLAB產生隨機數的全部内容,希望文章能够帮你解决matlab源知识库,MATLAB產生隨機數所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部