알고리즘, 자료구조

[알고리즘] random6 함수를 가지고 사칙연산만 사용해서 random12 함수 만들기

Alexim 2022. 5. 14. 15:15

랜덤하게 1에서 6으로 나오는 함수를 가지고 if문, 사칙연산만 사용해서

1 ~ 12 까지의 랜덤숫자가 나오는 random12함수 만들기

function random6() {

  return Math.ceil(Math.random() * 6);
}

 

function random12() {
  if (random6() % 2) {
    return random6() + 6;
  } else {
    return random6();
  }
}

 

1 ~ 6까지의 숫자는 확보가 되어있고 7 ~ 12까지의 숫자만 더 나오게 해주면 된다.

12까지의 랜덤숫자가 나오는 함수는 1 ~ 6 숫자가 나오는 확률 50%, 7 ~ 12숫자가 나오는 확률 50% 가지게 된다.

그렇다면 random6 함수로 확률을 나눌 수 있는 방법을 찾으면 될거라 생각했다.

홀수: 1, 3, 5 짝수: 2, 4, 6 반반의 확률이기 때문에 홀수, 짝수를 따져서 문제를 풀었다.

 

const result = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let resultValue;

for (let i = 0; i < 10000; i++) {
  resultValue = random12();
  result[resultValue - 1]++;
}

console.log(result)

console.log(result) 결과 : (12) [821, 844, 824, 819, 836, 892, 836, 865, 835, 807, 821, 800]