有人可以解释或指向一个页面,解释如何使用误差函数,误差函数的反函数和rand()(0和1之间的均匀随机数生成器)在matlab中创建正态分布的随机数?随机数不必限定到某个间隔。我有问题理解错误函数的概念及其反函数,以及它与创建通常分布的随机数有什么关系
答案 0 :(得分:2)
您需要应用名为inverse transform sampling的方法,该方法包括以下内容。假设您要生成具有给定分布函数 F 的随机变量。如果你可以计算反函数 F -1 ,那么你可以通过应用 F -1来获得所需的随机变量在区间[0,1]上均匀分布的随机样本。
错误函数(Matlab中的erf
)几乎给出了正态随机变量的分布函数。其反函数在Matlab中称为erfinv
。使用rand
生成均匀分布的随机数。
使用这些成分,您应该能够完成任务。请试一试,然后看到将鼠标悬停在矩形上的代码:
N = 1e6; % number of samples
x = erfinv(2*rand(1,N)-1); % note factor 2, because of definition of erf
hist(x,31) % plot histogram to check it is (approximately) normal
答案 1 :(得分:0)
Mathworks的这个link似乎给出了答案。
以下是链接中的示例:
% First, initialize the random number generator to make the results in this
% example repeatable.
rng(0,'twister');
% Create a vector of 1000 random values drawn from a normal distribution
% with a mean of 500 and a standard deviation of 5.
a = 5;
b = 500;
y = a.*randn(1000,1) + b;
% Calculate the sample mean, standard deviation, and variance.
stats = [mean(y) std(y) var(y)]
% stats =
%
% 499.8368 4.9948 24.9483
%
% The mean and variance are not 500 and 25 exactly because they are
% calculated from a sampling of the distribution.