用MATLAB產生隨機數並統計其分佈

2021-03-09 22:07:35 字數 4419 閱讀 1834

1樓:匿名使用者

n=100;

r=randn(1,n);

x=-4:0.1:4;

n=hist(r,x);

n=n/n;

y=normpdf(x,0,1)*0.1;

bar(x,n);hold on

plot(x,y,'r');hold off

2樓:泉國英買婉

random('poisson',lambda)random('poisson',lambda,m,n)泊松分佈的引數為lambda,如果只產生一個隨機數就是第一句的樣子第二行的語

內句表示會產容生m×n個隨機數,且這些隨機陣列成了m行n列的矩陣matlab的help中給出的例子:random('poisson',1:6,1,6)表示產生lambda分別為1,2,3.。。

6的六個隨機陣列成1×6的矩陣

>random('poisson',4)

ans=

5>>random('poisson',4,3,3)ans=37

3352

755>>

random('poisson',4:0.2:5,1,6)ans=24

6757

想用matlab生成指定概率分佈的隨機數,怎麼生成

3樓:硪丨曖戀

均勻分佈u(a,b):

產生m*n階[a,b]均勻分佈u(a,b)的隨機數矩陣:unifrnd (a,b,m, n)

產生一個[a,b]均勻分佈的隨機數:unifrnd (a,b)

0-1分佈u(0,1)

產生m*n階[0,1]均勻分佈的隨機數矩陣:rand (m, n)

產生一個[0,1]均勻分佈的隨機數:rand

二類分佈binornd(n,p,mm,nn) 如binornd(10,0.5,mm,nn)

即產生mm*nn均值為n*p的矩陣

binornd(n,p)則產生一個。而binornd(10,0.5,mm)則產生mm*mm的方陣,軍陣為n*p。

產生m*n階離散均勻分佈的隨機數矩陣:

unidrnd(n,mm,nn) 產生一個數值在1-n區間的mm*nn矩陣

產生mm nn階期望值為 的指數分佈的隨機數矩陣:

exprnd ( ,mm, nn)

matlab 怎麼產生01分佈隨機數

4樓:紫色學習

在matlab 中產生0-1上均勻分佈的隨機數方法如下:

方法1、對於問題,如果 y 是m*n的服從0~1均勻分佈的隨機矩陣:

y = rand(m,n);

方法2、用統計工具箱,y = unifrnd(0,1,m,n).

另外,提供常用的函式分佈供參考:

1、 均勻分佈u(a,b)

產生m*n階[a,b]均勻分佈u(a,b)的隨機數矩陣:unifrnd (a,b,m, n)

2、0-1分佈u(0,1)

產生m*n階[0,1]均勻分佈的隨機數矩陣:rand (m, n)

3、二類分佈binornd(n,p,mm,nn),即產生mm*nn均值為n*p的矩陣

4、產生m*n階離散均勻分佈的隨機數矩陣:

unidrnd(n,mm,nn) 產生一個數值在1-n區間的mm*nn矩陣;

5、產生mm nn階期望值為 的指數分佈的隨機數矩陣:exprnd ( ,mm, nn).

5樓:佔有≠擁有

sign(fix(rand/0.3))

rand取0-1區間的隨機數

fix(rand/0.3) 則取到0-0.3區間時=0,取到0.3-1區間時≥1,概率比為3:7

sign(fix(rand/0.3))將非零數取1;即rand取在0.3-1區間時總式=1

取在0-0.3區間時總式=0

樓上的變成7:3了

6樓:

1-fix(rand/0.7)

一般的fix(rand+p)

p為取1的概率

用內建函式不就可以了

7樓:手機使用者

**用這麼費事。最好理解、也很通用的是

floor(rand+0.7)

也就是吧0.7~1.7之間的均勻分佈向下取整到0或者1,0.7就是1的概率

如何使用matlab產生指數分佈的隨機數

8樓:戀圈圈兒

在matlab中用來產生指數分佈隨機數的函式是exprnd( );

語法:1. r=exprnd(mu)

生成服從引數為mu的指數分佈隨機數。

2. r=exprnd(mu,m)

生成服從引數為mu的指數分佈的隨機數矩陣,矩陣的形式由m定義。

例如,n=exprnd(5,[1 6])

3. r=exprnd(mu,m,n)

生成m×n形式的指數分佈的隨機數矩陣。

當產生的陣列是一維向量時,若想排序可以利用sort(a)函式,a為隨機陣列,預設的結果是升序排列。

如果排序後還需要保留原來的索引可以用返回值,即[b,ind]=sort(a),計算後,b是a排序後的向量,a保持不變,ind是b中每一項對應於a 中項的索引。

若想對a陣列進行降序排列,先用x=eye(n)生成一個n維的單位陣,然後用x=rot90(x)將其旋轉為次對角線的單位陣,再用原來矩陣乘以x即可,如要講a逆序排列採用如下步驟:

x=eye(size(a));

x=rot90(x);

a=a*x;

9樓:匿名使用者

exprnd(2,3,4)

產生3行4列均值為2的指數分佈隨機數

matlab怎樣產生按某概率函式分佈的隨機數

10樓:休閒居大偉

對於你的問題,如果 y 是m*n的服從0~1均勻分佈的隨機矩陣: y = rand(m,n) 用統計工具箱, y = unifrnd(0,1,m,n)

11樓:跳出桎梏

matlab統計工具箱中提供了slicesample函式,用來生成任意指定分佈隨機數

rand=slecesample(initial,nasample,『pdf』,pdffun)

initial:指定一個初始值

nasample:產生隨機數的個數

『pdf』:概率分佈函式

pdffun: 概率分佈函式的控制代碼

如何在matlab中生成一組在規定範圍符合指定分佈的隨機數

12樓:匿名使用者

首先要確定需要的是什麼分佈的隨機數,也就是要知道隨機數要符合的概率密度分佈函式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

使用直接抽取的方法 先產生 [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)');

怎麼用matlab產生一個平均分佈的隨機數

13樓:昱婷漫步

rand函式生成的就是0~1之間之間符合平均分佈的隨機數,如:

a=rand(1,1000);

hist(a)

------------------生成的直方圖為:

matlab產生隨機數問題Matlab產生隨機數問題

第一個問題,執行 下面的 就都有了。x 10 rand 1,1000 t 1 1000 plot t,x max rand max x min rand min x mean rand mean x segma std x 第二個,執行下面 a 0 1 0 1 0 0 0 0 1 b 1 0 0 0...

c產生隨機數 不重複,C 產生隨機數 不重複

private const int num 3 數目 private const int maxvalue 5 最大數 private const int minvalue 1 最小數 public int sort int num return num public int getnum int ...

如何使用matlab產生指數分佈的隨機數

在matlab中用來產生指數分佈隨機數的函式是exprnd 語法 1.r exprnd mu 生成服從引數為mu的指數分佈隨機數。2.r exprnd mu,m 生成服從引數為mu的指數分佈的隨機數矩陣,矩陣的形式由m定義。例如,n exprnd 5,1 6 3.r exprnd mu,m,n 生成...