2014-09-12 2 views
-3

을 생성하는 방법 누군가가 설명하거나 날 오류 함수의 역함수를 사용하여 matlab에 정상적으로 분산 된 난수를 생성하는 방법을 설명하는 페이지를 가리키고, rand() (균일 한 난수 0에서 1 사이의 발전기)? 임의의 숫자는 특정 간격으로 묶일 필요가 없습니다. 오류 함수의 개념과 그 반대의 개념을 이해하는 데 문제가 있습니다. 일반적으로 분산되어있는 임의의 숫자를 만드는 방법과 관련되어 있습니다.정상적으로 분산 된 난수를 생성하는 방법

+2

은 그냥'randn를 사용 'function : http://www.mathworks.com.au/help/matlab/ref/randn.html. homer = work 문제처럼 의심 스럽습니다. – David

답변

0

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

당신은 다음에있다 inverse transform sampling라는 방법을 적용해야합니다. 주어진 분포 함수 F으로 확률 변수를 생성한다고 가정하십시오. 만약 역함수 F-1을 계산할 수있는 경우는 구간 [0,1]에서 균일 한 분포를 갖는 랜덤 샘플 F-1을 적용하여, 원하는 확률 변수를 얻을 수있다.

오차 함수 (erf, Matlab) 거의은 일반적인 확률 변수의 분포 함수를 제공합니다. 그 역함수는 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

+0

마우스를 올리면 깔끔한 트릭을 얻을 수 있습니다. 쉽게 할 수있는 방법이 있습니까? 또는'>! '등을 직접 입력해야합니까? –

+0

@JohnColeman 감사합니다. 손으로. 가장 지루한 부분은 백틱이고'
'는 코드를 줄로 나눕니다. –

관련 문제