matlab如何程式設計產生正態分佈的隨機數的程式

2021-03-19 18:19:37 字數 3825 閱讀 7084

1樓:匿名使用者

可以採用box_muller的方法。

box-muller方法是以兩組獨立的隨機數u和v,這兩組數在(0,1]上均勻分佈,用u和v生成兩組獨立的標準常態分佈隨機變數x和y

x=sqrt((-2)*ln(u))*cos(2*pi*v);

y=sqrt((-2)*ln(u))*sin(2*pi*v);

matlab 程式

function norm_distribution_box_muller

clear all;clc;%清屏

m=input('請輸入平均值:');

n=input('請輸入標準差:');

t=input('請輸入資料長度:'); %產生正態分佈的隨機數

for i=1:t

a=rand;

b=rand;

x1(i)=sqrt((-2)*log(a))*cos(2*pi*b);

x2(i)=sqrt((-2)*log(a))*sin(2*pi*b);

y1=x1*n+m;

y2=x2*n+m;

enddisp(y1); %求平均值和標準差

m1=mean(y1); n1=std(y1); disp(m1); disp(n1); disp(y1); %求平均值和標準差

m2=mean(y2); n2=std(y2); disp(m2); disp(n2);  %將資料寫入文字檔案

fid=fopen('xiefei1.dat','w'); z1=y1;  fprintf(fid,'%f\t',z1);

fclose(fid); %將資料寫入文字檔案

fid=fopen('xiefei2.dat','w'); z2=y2;

fprintf(fid,'%f\t',z2); fclose(fid);

%繪圖subplot(2,1,1); histfit(y1);

xlabel('隨機數'); ylabel('出現的次數');

%繪圖subplot(2,1,2);histfit(y2);

xlabel('隨機數');ylabel('出現的次數');

%檢驗h1=lillietest(y1);%若結果h1為1,則說明零假設不成立,拒絕零假設;否則,結果為0,零假設成立,即原分佈為正態分佈

disp(h1);

h2=lillietest(y2);%若結果h2為1,則說明零假設不成立,拒絕零假設;否則,結果為0,零假設成立,即原分佈為正態分佈

disp(h2);

如何matlab取正態分佈隨機數

2樓:子衿悠你心

運用normrnd函式。

1. r=normrnd(mu,sigma):生成服從正態分佈(mu引數代表均值,sigma引數代表標準差)的隨機數。

輸入的向量或矩陣mu和sigma必須形式相同,輸出r也和它們形式相同。標量輸入將被擴充套件成和其它輸入具有相同維數的矩陣。

2. r=normrnd(mu,sigma,m,n): 生成m×n形式的正態分佈的隨機數矩陣。

例項:生成均值為0,標準差為1的2*2正態分佈隨機矩陣。

拓展說明:

matlab中還有個函式randn,可以產生均值為0,方差σ^2 = 1,標準差σ = 1的正態分佈的隨機數或矩陣。

y = randn(n)返回一個n*n的隨機項的矩陣;

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

3樓:匿名使用者

randn 標準正態分佈

如果你想變成你的需要的

均值和方差的話:

a+b*randn

均值是a,標準差是b。

如果你想產生很多,比如一個1000*1的向量,那麼在randn後邊加括號,寫上尺寸就行了

randn([1000,1]);

4樓:匿名使用者

使用randn或者normpdf

randn 產生標準正態分佈 轉成需要的非正態分佈: r = μ + δ*randn(m,n);

normpdf 產生正態分佈normpdf(x,μ,δ) x為範圍

如何產生正態分佈的隨機數

5樓:匿名使用者

1,工具法:

在excel2007的資料選項卡中單擊「資料分析」按鈕(初次使用此功能需要在excel選項中新增「分析工具庫」載入項),在出現的「資料分析」對話方塊中選擇「隨機數發生器」,開啟「隨機數發生器」對話方塊,在這個對話方塊裡可以設定所需的隨機數引數,其中「變數個數」表示需要同時生成的隨機陣列數,留空的情況下可以生成一組隨機數。「隨機數個數」指的是同一組中生成的隨機數個數。在「分佈」下拉選單中選擇「正態」。

「平均值」和「標準偏差」是與分佈形態相關的兩個引數,根據實際的需要進行輸入。最後在「輸出選項」中選擇隨機數生成的位置。單擊「確定」按鈕即可生成一組符合引數要求的正態分佈的隨機數。

2,公式法:

用到兩個函式normdist和norminv

,分別介紹如下:normdist

用途:用於求正態分佈的概率密度以及累積概率格式:=normdist(x,

均值,標準差,

是否累積)其中最後一個引數「是否累積」=false時計算的是概率密度,「是否累積」=true時計算的是累積概率(從-∞算起)例如:normdist(1,0,1,false)=0.242

normdist(1,0,1,true)=0.841norminv用途:由累積概率反算位置點,可以看作normdist的反函式格式:=norminv(概率,

均值,標準差)例如:norminv(0.841,0,1)=1

當所研究的正態分佈為標準正態分佈(即均值=0

,標準差=1)時,可以直接用normsdist和normsinv兩個函式。

6樓:匿名使用者

正態分佈隨機數生成函式

:norm.dist(x,mean,standard_dev,cumulative)norm.dist函式語法具有下列引數:x必需。

需要計算其分佈的數值。mean必需。分佈的算術平均值。

standard_dev必需。分佈的標準偏差。cumulative必需。

決定函式形式的邏輯值。如果cumulative為true,則norm.dist返回累積分佈函式;如果為false,則返回概率密度函式。

泊松分佈隨機數生成函式:poisson.dist(x,mean,cumulative)poisson.

dist函式語法具有下列引數:x必需。事件數。

mean必需。期望值。cumulative必需。

一邏輯值,確定所返回的概率分佈的形式。如果cumulative為true,則poisson.dist返回發生的隨機事件數在零(含零)和x(含x)之間的累積泊松概率;如果為false,則poisson返回發生的事件數正好是x的泊松概率密度函式。

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));

matlab如何產生01之間的正太分佈隨機

randn 1,1000 表示在 0,1 間生成1 1000的隨機正態分佈矩陣,在workspace裡點 一下返回值 預設為ans 然後在專plots那裡就會提供各種屬 圖形的了 基於2015a版本 怎麼用matlab生成1000個近似服從正態分佈的隨機數,隨機數範圍是0到1之間 要求隨機數範圍在0...

Matlab程式設計,請問這道題該如何程式設計,求解答

function m ean a,b m sum a.b sum b end 下面這道程式設計題怎麼做?include void main printf 英文字母 d n letter printf 空格 d n space printf 數字 d n digit printf 其它字元 d n o...

matlab萊斯分佈隨機數如何產生

rice rician distribution clear,clc a 1 sigma 1 fx sigma,x,a x.sigma 2 exp a.2 x.2 2 sigma besseli a.2,2.027 x 0 01 10 y fx sigma,x,a figure 1 plot x,y...