트랙
/
JavaScript
JavaScript
/
연습 문제
/
선장의 일지
선장의 일지

선장의 일지

학습 연습 문제

소개

많은 프로그램은 실제와 같은 상황을 흉내 내기 위해 (의사)난수가 필요해요.

흔히 접할 수 있는 예로는 다음과 같은 것들이 있어요.

  • 동전 던지기: ('H', 'T') 중 하나를 무작위로 뽑는 것.
  • 주사위 굴리기: 1부터 6까지의 무작위 정수.
  • 카드 섞기: 카드 목록을 무작위로 재배열하는 것.
  • 3D 그래픽 시뮬레이션에서 나무와 덤불을 만드는 것.

컴퓨터로 진정한 난수를 생성하는 것은 생각보다 어려운 기술적 과제예요. 그래서 "의사난수" 생성기도 있는 거죠.

Caution

Math.random() 함수는 보안 및 암호 관련 용도로 절대 사용하면 안 돼요! 더 알아보려면 이 개념을 다루는 학습 문제를 마쳐 봐요

난수 생성하기

JavaScript에서는 Math.random() 함수를 사용해 의사난수를 만들 수 있어요. 이 함수는 0 이상 1 미만의 의사난수 실수를 반환해요.

지침

메리는 TV 시리즈 Star Trek: The Next Generation의 열렬한 팬이에요. 메리는 친구들과 종이와 펜으로 하는 롤플레잉 게임을 자주 하는데, 그 게임에서 메리와 친구들은 엔터프라이즈호의 승무원인 척을 해요. 메리가 맡은 캐릭터는 피카드 선장이라서, 선장 일지를 써야 해요. 메리는 게임에서 창의적인 부분은 좋아하지만, 즉석에서 무작위 데이터를 만드는 건 좋아하지 않아요.

선장 일지에 자주 등장하는 데이터를 만들어 내는 무작위 생성기를 만들어서 메리를 도와주세요.

1. 무작위 우주선 등록 번호 생성하기

엔터프라이즈호(등록 번호 NCC-1701)만 우주를 날아다니는 게 아니에요! 다른 우주선을 만나면, 메리는 그 우주선의 등록 번호를 일지에 적어야 해요.

등록 번호는 "NCC-" 접두사로 시작하고, 그 뒤에 1000부터 9999까지(양 끝 포함)의 숫자가 와요.

무작위 우주선 등록 번호를 반환하는 randomShipRegistryNumber() 함수를 구현해요.

randomShipRegistryNumber();
// => "NCC-1947"

2. 무작위 스타데이트 생성하기

날짜도 없는 일지가 무슨 소용이 있을까요?

스타데이트는 실수예요. The Next Generation의 첫 번째 시즌에서 엔터프라이즈호가 겪는 모험은 스타데이트 41000.0과 42000.0 사이에서 벌어져요. "4"는 24세기를, "1"은 첫 번째 시즌을 나타내요.

41000.0 이상, 42000.0 미만의 실수를 반환하는 randomStardate 함수를 구현해요.

randomStardate();
// => 41458.15721310934

3. 무작위 행성 생성하기

엔터프라이즈호는 여행 중에 많은 행성을 만나요. Star Trek 세계관의 행성들은 특성에 따라 등급으로 나뉘어요. 예를 들어, 지구는 M등급 행성이에요. 가능한 모든 행성 등급은 D, H, J, K, L, M, N, R, T, Y예요.

randomPlanetClass() 함수를 구현해요. 행성 등급 중 하나를 무작위로 반환해야 해요.

randomPlanetClass();
// => "K"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
JavaScript Exercism

선장의 일지 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.