프로그램을 짜다 보니 랜덤한 숫자나 문자를 출력해야 할 때가 생겼다. 행맨 게임도 Fetch API를 이용해서 단어를 가져올 수도 있지만 이미 만들어 둔 문자 배열에서 랜덤한 문자를 가져오도록 하려면 인덱스 값으로 랜덤한 숫자를 갖는 원소를 불러내야 한다. Math.random() 메서드를 이용해서 해결할 수 있다.
Math.random()
메서드의 역할을 살펴보고, 어떤 식으로 활용할 수 있는지 단계별로 알아보자.
Math.random()
은 0부터 1 미만까지의 숫자를 무작위로 뱉어낸다.
const randomNum = Math.random()
console.log(randomNum)
// 0.6604313374630874
따라서 0부터 5 미만까지의 숫자를 랜덤으로 뽑으려면 Math.random()
에 5를 곱하면 된다.
const randomNum = Math.random()
console.log(randomNum * 5)
//4.621221878402874
Math.floor()
는 소수점 이하를 내림하는 메서드다. 0에서 5 미만까지, 즉 0부터 4까지의 정수를 랜덤으로 얻고자 한다면 Math.random()
으로 나온 값에 5를 곱한 결과물을 내림하면 된다.
const randomNum = Math.random() * 5
const randomNumFloor = Math.floor(randomNum)
console.log(randomNumFloor)
//3
100부터 199까지의 정수를 랜덤으로 뽑고 싶으면 다음과 같이 작성한다.
const randomNum = Math.random() * 100
const randomNumFloor = Math.floor(randomNum + 100)
console.log(randomNumFloor)
//133
배열의 원소를 무작위로 뽑으려면 인덱스 값을 랜덤으로 지정해주면 된다. 원소가 4개인 배열에서는 인덱스 값이 0에서 3까지 필요하기 때문에, array.length
메서드로 구한 4를 곱해준 후, 그 값을 내림하면 된다.
const words = ['apple', 'exercise', 'boy', 'yogurt']
const selected = words[Math.floor(Math.random() * words.length]
console.log(selected)
//boy