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...