자바스크립트

1번) 인생도박! 랜덤 알고리즘

자바나 C언어 시간에 제대로 들은 사람이라면, int 형태로 나오는 랜덤 함수에만 익숙할 것이다.

#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(NULL));
    printf("%d\n", rand());
}
public static void main() {
    Random rand = new Random();
    System.out.println(rand.nextInt());
}

이러면, 예쁘게 원하는대로 정수가 나온다. 하지만 자바스크립트의 랜덤함수는 다르다.

정신건강에 좋지 않은 자바스크립트답게, 랜덤값을 소수로 준다. 자바스크립트에서의 Math.random()은 다음과 같은 범위를 가진다.

$$ 0 \le Math.random() < 1$$

주의, 0보다 크거나 같고, 1보다 작다.

8번) 0~9사이의 정수 랜덤으로 가져오기

위 랜덤값을 이용하여, 0~9까지 랜덤값으로 확장해보자. Math.random()이 0보다 크거나 같고, 1보다 작기 때문에 $$ 0 \le Math.random() < 1$$ 이 식에 ×10을 해주면 다음과 같은 식이 된다.

$$ 0 \le 10 \times Math.random() < 10$$, 즉 0부터 9까지의 실수가 나온다. 이를 정수로 바꾸어 주는 방법은 나온 랜덤값을 내림시켜주는 것이다.

자바스크립트의 올림/내림/반올림 함수는 다음과 같다.

기능 함수 외우는법
올림 Math.ceil() ceil은 영어로 천장이다.
내림 Math.floor() 바닥....
반올림 Math.round() 걍 외우세요 뭐

그래서, 실제로 사용할 수 있는 코드는 다음과 같다.

Math.floor(10 * Math.random());

0~N까지 정수를 랜덤으로 바꾸고 싶으면, 10 대신 원하는 숫자를 넣으면 된다.

20~29사이의 정수 랜덤으로 가져오기

사고를 조금만 더 확장해보자. 20~29까지의 값20+0 ~ 20+9까지의 값이다. 즉, 0~9까지의 값을 랜덤으로 구한 다음에 20을 더한다.

20 + Math.floor(10 * Math.random());

정 이해가 안된다면 외우도록 하자.

Min ~ Max 사이의 정수를 랜덤으로 가져오고자 한다면

(Min) + Math.round((Max - Min + 1) * Math.random());

매우 많은 매개변수 보내기

arguments 객체는 함수에 전달된 인수에 해당하는 Array같은 객체이다. 그래서 함수 내부에서만 쓸 수 있다.

우리가 평소 쓰는 함수에서는 이런 걸 상상도 할 수 없는게 사실, 하지만 만악의 근원 자바스크립트에서는! 모든지 된다!

function takeSum(a, b, c, d, e) {
  alert(a + b + c + d + e);
}

takeSum(1, 2, 3, 4, 5);

결과는 다음과 같다.

하지만, 매개변수에서 넘어오는 값을 배열 형태로 받을 수 있는데 그게 바로 arguments변수다.

function takeSum() {
    var sum = 0;
    for (var i=0; i<arguments.length; i++) sum += arguments[i];
    alert("with arguments : " + sum);
}

takeSum(1,2,3,4,5);

똑같이 15가 나오는 걸 알 수 있다.

results matching ""

    No results matching ""