如何在matlab中生成一組在規定範圍符合指定分布的

2021-03-27 14:13:24 字數 3595 閱讀 4488

1樓:匿名使用者

1,rand 生成均勻分布的偽隨機數。分布在(0~1)之間

2,randn 生成標準正態分佈的偽隨機數(均值為0,方差為1)

3, randi 生成均勻分布的偽隨機整數

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

2樓:匿名使用者

首先要確定需要的是什麼分布的隨機數,也就是要知道隨機數要符合的概率密度分布函式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在一定範圍內生成隨機數

3樓:匿名使用者

rand([m n])產生 m行,n列(0,1)範圍內均勻分布的偽隨機數

如果要求在區間(a,b)內產生均勻分布的隨機數

r = a + (b-a).*rand([m n]));

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

4樓:匿名使用者

既然是指定分布,就不可能規定隨機數的範圍,否則就不符合指定的分布。只能先生成一定分布的隨機數,然後從中挑選在規定範圍內的數

matlab在一定範圍內生成隨機數,**是怎麼回事?

5樓:棉花表表

rand([m n])產生來 m行,n列(0,1)範圍內源均勻分布的偽隨機數

如果要求在區間(a,b)內產生均勻分布的隨機數r = a + (b-a).*rand([m n]));

matlab 生成隨機整數的方法:

1,生成0-5之間的10個隨機整數

在matlab主視窗中輸入round(rand(1,10)*5) 回車

2,生成1個隨機整數,,

命令  round(rand(1,1)*5)  回車3,生成-5-4之間的10個隨機整數

在matlab主視窗中輸入   round(rand(1,10)*9)-5  回車

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

6樓:硪丨曖戀

均勻分布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 如何生成一組正隨機數

7樓:匿名使用者

matlab函式randn:產生正態分佈的隨機數或矩陣的函式randn

產生均值為0,方差 σ^2 = 1,標準差σ = 1的正態分佈的隨機數或矩陣的函式.

用法:y = randn(n)

返回乙個n*n的隨機項的矩陣.如果n不是個數量,將返回錯誤資訊.

y = randn(m,n) 或 y = randn([m n])返回乙個m*n的隨機項矩陣.

y = randn(m,n,p,...) 或 y = randn([m n p...])

產生隨機數組.

8樓:轉基因牛

abs(randn(1,100));

如何在c語言中生成一定範圍內的隨機數?

9樓:蘋果

srand((int)time(null));設定隨機數種子rand()%100;產生0-99的隨機數。

高階點的,假如要產生16-59之間的數,你可以這樣寫:rand()%44+16(這裡44由59-16+1得到)。其他情況如法炮製!

c語言中用rand()函式產生20-90的隨機整數20-90共有71個數字,所以是rand()%71+20 ;

用rand()生成-20-20的隨機數

-20-20共有41個數字,所以是rand()%41-20;

需要注意的是,在執行以上**之前最好設定一下:

srand(time(null));//用系統當前時間設定rand()隨機序列種子,保證每次執行隨機序列不一樣

10樓:喬澈旁季

用rand函式吧久用c語言太記貌似int

a=rand()%

x(x即範圍)偽隨機數

#include

srand(time(null));使用前用條語句初始化使用int

a=rand()

/rand_max*n;

真隨機數

如何用matlab產生符合某種分布的隨機序列? 5

11樓:劉威

看你要什麼了 matlab自帶很對隨機數

你要的分布要是自己定義的話 可以用均勻分布做出來

你要告訴我你要什麼

matlab中如何對一組資料進行fft變換後得到頻譜圖

1 直接對其使用來ceil函式,源 可以向上取整 即大於等於給定數bai據的最du小整數。2 使用zhifloor函式可以進行向下取dao整。如圖,將矩陣a中的每個元素取小於等於該元素的最大整數。3 使用fix函式則可以去除小數部分。對於大於0的元素相當於floor,對於小於0的元素相當於ceil。...

Matlab如何從一組資料中無重複的隨機選取幾個數

1 首bai 先知道matlab中刪除矩陣重複資料du 可以用到unique函式,數 zhi組的唯一值,在dao 命令列視窗下內help unique,可以看到函式容的具體用法。2 在命令列視窗中新建乙個a 1 3 4 5 6 6 7 8 9 8 矩陣,裡面有重複資料6,8。3 輸入unique a...

如何用matlab將一組字串寫入excel的格

m視界 舉例說明 filename testdata.xlsx a sheet 1 xlrange a1 xlswrite filename,a,sheet,xlrange 執行結果如下 關鍵點 a a必須一個cell型別 a time 則不會將time作為一個整體寫入excel單元格。覺得有幫助就...