| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 패스트캠퍼스
- styled-components
- 리액트
- 프론트엔드
- 국비지원교육
- 프로그래머스
- 자료구조
- 공식문서
- 자바스크립트
- 내일배움카드
- 개발 공부
- 입문
- useMemo
- TypeScript
- useRef
- next.js
- 비전공자
- MegabyteSchool
- Github
- 모던 자바스크립트 딥 다이브
- GIT
- JavaScript
- 이벤트
- react
- 모던 딥 다이브 자바스크립트
- CSS
- 개발자취업부트캠프
- 알고리즘
- 메가바이트스쿨
- 코딩테스트
Archives
- Today
- Total
개발 기록 남기기✍️
[JavaScript] Math.random() 으로 범위 내 랜덤 수 구하기 본문
Math.random() 은 0 이상 1 미만 (0 ~ 0.9999...) 의 난수(랜덤한 숫자)를 반환한다.
보통 Math.random() 값에 10을 곱한 뒤, Math.floor()를 통해 소수점 아래 부분을 내림해 0 이상 10 미만 정수를 만드는데 많이 쓰인다.
그런데, 0 ~ 10 사이 수가 아닌, 내가 원하는 범위 내에서 랜덤한 값이 반환되게 하고 싶으면 어떻게 해야할까?
일단, 랜덤함수의 범위는 0 <= x < 1 이므로 곱해준 수 만큼 범위가 늘어난다.
// 랜덤 함수에 5를 곱하면
Math.random() * 5
// 난수의 범위가 아래처럼 변경
0 <= X < 1
0 * 5 <= X < 1 * 5
0 <= X < 5
만약 5 이상 10 미만의 값을 구하고 싶다면 5 <= X < 10 범위가 설정되어야 하지만, 0으로 시작하는 랜덤값의 범위에 숫자를 곱해서 원하는 값을 나타낼 순 없다. 아래와 같은 방법을 사용해야 한다.
// 아래와 같은 순서로 범위가 변경
0 <= X < 1
0*(10-5) <= X < 1*(10-5)
0 <= X < 5
0+5 <= X < 5+5
5 <= X < 10
Math.floor(Math.random() * (max - min + 1)) + min 에서 (max - min)에 1을 더하면 최대값까지 포함하게 되어 5이상 10이하의 값을 반환할 수 있게 된다.
'Front-End > JavaScript' 카테고리의 다른 글
| [JavaScript] 토이 프로젝트 - 카드 짝 맞추기 게임 (1) | 2023.01.30 |
|---|---|
| [JavaScript] 토이 프로젝트 - 가위바위보 (0) | 2023.01.12 |
| 자바스크립트 중급 (6) - Class, Promise, async, await, Generator (0) | 2022.12.05 |
| 자바스크립트 중급 (5) - setTimeout/setInterval, call, apply, bind, 상속, prototype (0) | 2022.12.05 |
| 자바스크립트 중급 (4) - 구조 분해 할당, 나머지 매개변수, 전개구문, 클로저 (0) | 2022.12.05 |