热心网友的回答:
可以採用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取正态分布随机数
子衿悠你心的回答:
运用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的随机项矩阵。
热心网友的回答:
randn 标準正态分布
如果你想变成你的需要的
均值和方差的话:
a+b*randn
均值是a,标準差是b。
如果你想产生很多,比如一个1000*1的向量,那么在randn后边加括号,写上尺寸就行了
randn([1000,1]);
热心网友的回答:
使用randn或者normpdf
randn 产生标準正态分布 转成需要的非正态分布: r = μ + δ*randn(m,n);
normpdf 产生正态分布normpdf(x,μ,δ) x为範围
如何产生正态分布的随机数
热心网友的回答:
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两个函式。
热心网友的回答:
正态分布随机数生成函式
: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 如何生成一组正随机数
热心网友的回答:
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...])
产生随机阵列.
转基因牛的回答:
abs(randn(1,100));
randn 1,1000 表示在 0,1 间生成1 1000的随机正态分布矩阵,在workspace里点 一下返回值 预设为ans 然后在专plots那里就会提供各种属 图形的了 基于2015a版本 怎么用matlab生成1000个近似服从正态分布的随机数,随机数範围是0到1之间 要求随机数範围在0...
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...
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...