티스토리 뷰
랜덤함수
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; }
'■ 개발관련 ■ > 산수와 알고리즘' 카테고리의 다른 글
재귀함수 (0) | 2013.11.15 |
---|---|
소수찾기 (0) | 2013.11.15 |
조건문에서 else 블록없을 경우 (0) | 2013.11.01 |
배열의 최소,최대 (0) | 2013.10.28 |
반복문에서 홀수,짝수,배수 표현 (0) | 2013.10.28 |