본문 바로가기
programming language/MATLAB

MATLAB random number 생성

by __observer__ 2011. 3. 23.
반응형

이번 포스팅에서는 MATLAB 에서 기본으로 제공하는 각종 random number 의 생성 방법에 대해 알아본다.

 

MATLAB 에서도 rand() 함수는 uniform random number 를 발생 시킨다.

 

rand() 함수는 0에서 1 사이 값을 발생 시킨다. 이를 이용하여 다양한 범위의 uniform random number 를 발생 시킬 수 있다.

 

a ~ b 사이의 n행 k열 uniform random number 를 발생시키는 방법은 다음과 같다.

 

Uniform_rand = a + (b-a).*rand(n, k);

 

예를 들어 -10 ~ 5 사이의 4행 5 열 의 uniform random number 를 발생 시키려면 다음과 같이 하면 된다.

 

 

다음으로 정규 분포라 불리는 Gaussian random number 에 대해 알아보자.

 

Gaussian random number 를 발생시키는 함수는 randn() 이다.

 

randn() 함수는 평균이 0 이고 분산이 1 인 Gaussian random number 를 발생 시킨다.

 

평균이 a 이고 분산이 b 인 n행 k 열의 Gaussian random number 를 발생시키는 방법은 다음과 같다.

 

Gaussian_randn=randn(n, k)*sqrt(b)+a;

 

예를 들어 평균이 3 이고 분산이 9인 3행 4열 Gaussian random number 를 발생시켜 보면 다음과 같다.

 

 

다음으로 정수 random number 를 발생시켜주는 randi() 함수에 대해 알아보자.

 

randi(imax, n, m) 이라 정의 하게 되면 1,2,3,…imax 까지의 정수 중 uniform 하게 n 행 m 열 만큼 발생시켜 준다.

 

또는 randi([imin, imax], n, m) 이라 정의 하면 imin, imin+1, imin+2, … imax까지의 정수 중 uniform 하게 n 행 m 열 만큼 발생시켜 준다.

 

예를 들어 randi([-10, 2], 5, 4) 라고 정의 하면 -10,9,8… 2 까지의 정수를 5행 4열로 발생시켜 준다.

 

 

마지막으로 randperm() 함수에 대해 알아보자. randperm(k) 라 하게 되면 1:k 까지의 값들을 random 하게 나열 한다.

 

예를 들어 randperm(5) 하면 다음 그림과 같이 1,2,3,4,5 값을 random 하게 나열하는 식이다.

 

 

randperm(45) 의 값의 임의의 부분 6개를 취하면 간단하게 random한 로또 번호 생성기를 만들 수 있다.

 

 


반응형

댓글