serpiko 2013. 11. 5. 20:16

   랜덤함수


Math.random() 함수는 0 에서 1미만의 난수를 발생시킨다.


여기에서 0에서 1미만의 난수란 다음과 같은 의미.

 

0.0000000000000  ~ 0.99999999999999999 (소숫점 15자리까지)로 이해하면 알맞다.


확인을 위해 Math.random() 자체를 출력 해보면

<!DOCTYPE HTML>
<html lang="ko">
<head>
<title> NewDocument </title>
<meta charset="utf-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head>
<body>
	<script>
		var ran = Math.random();
		document.write(ran);
	</script>
</body>
</html>

결과는 0.630697344429791

 

따라서 Math.random * Num 을 하면 최대 맥시멈이 0.9999... 이므로 Num을 포함하지 않는 실수형 숫자 데이터를 반환하게 된다.




   랜덤함수와 같이쓰는 Math 메서드


위와 같은 조건(실수형, 최대치가 0,9)으로 인해 독립적으로 쓰인다기 보다 다른 Math.메서드와 같이 사용되는게 대부분이다.


Math.ceil : 올림 ( 0.9 -> 1 )


Math.round : 반올림 ( 0.5 -> 1)


Math.floor : 내림 ( 0.7 -> 0 )


이 중에서 보통 floor를 쓰는게 보편적이다. round를 쓸 경우 0과 1이 나올 수 있는 확률이 절반으로 줄어들기 때문이다.

 

아래 두 문장은 역시 num을 포함하지 않는다.

 

var n1 = Math.random() * num; //실수형

var n2 = Math.floor(Math.random() * num); //내림 정수형

 



   공식화 (자바스크립트)


1.max를 포함하지 않는 함수. (물론 결과값이 실수형 : '3.123123123123..' 으로 나온다.)


function randomize($min, $max){
return Math.random() * ($max - $min) + $min;
}

 

2.max를 포함하는 함수 ( floor로 내림처리를 하였으므로 intiger 형 : '2' 로 출력된다. )

function randomize($min, $max){
return Math.floor(Math.random() * ($max - $min + 1)) + $min;
}