개강과 함께 조심스레 MATLAB을 시작해본다...,,, ㅎ 따끈따끈 맽랩 첫 코딩을 요즘 뜸했던 벨로그와 함께 기록하려고 함!
점점 공학도의 길로... (아무튼 공학임)
의사랜덤숫자발생기(pesudo-random number generator)란?
임의의 숫자를
결정성(deterministic)
알고리즘에 따라 생성한다.
좋은 의사랜덤숫자발생기의 특징
- 알고리즘에 서로 다른 seed 값을 부여했을 때, 이전과 다른 수열을 생성해야 함
- 생성된 숫자는 주어진 구간에서 uniform(균일한) 분포를 가져야 함
- 생성된 숫자 내 상관성(correlation)이 없어야 함
% 0~1사이의 난수 1000개 생성
X=rand(1, 1000);
실행하면 아래처럼 명령 창에 난수 값이 뜬다.
기초적으로 의사랜덤숫자 발생기는 0~1값을 생성하는데, 다른 custom 구간의 난수를 생성하고 싶다면 다음과 같은 변환식을 수행한다.
#임의의 구간 에 균일하게 분포된 랜덤 숫자의 변환식
% program for generating N dc voltage
%
N=input('Enter the Number of Voltages to generate :');
w=input('Enter the nominal voltage(V) of the generator :');
p=input('Enter the + or - uniform variation(V) about the nominal voltage :');
flag1=input('Enter 1 if all voltages are to be displayed; otherwise enter 0:');
flag2=input('Enter 1 if histogram is to be displayed; otherwise enter 0:');
X=rand(1,N);
W=w-p+2*p*X;
mu=mean(W);
std_dev=std(W);
disp('Sample mean and standarad deviation of voltages:');
disp(mu)
disp(std_dev)
if flag1 == 1
disp('The voltages in V are :');
disp(W)
end
if flag2 == 1
hist(W), xlabel('Voltage, V'), ylabel('Number of counts'), ...
title(['Distribution of ', num2str(N), 'Voltage']), grid
end