Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
Tags
- axios
- React-Native업데이트
- CS
- RN아키텍쳐
- no-permission-handler-detected
- motion.div
- animation
- RN새로운아키텍쳐
- react-native-permissions
- named type
- react
- react-native
- javascript
- react-native-image-picker
- 비동기
- promise.all
- rn
- Hash-table
- Throttle
- hydration mismatch
- await
- debounce
- private-access-to-photos
- Promise
- Swift
- RN업데이트
- ios
- react native
- react animation
- async
Archives
- Today
- Total
하루살이 개발일지
[JavaScript] 중복을 제외하여 0부터 9까지 랜덤한 숫자 생성하기 (Math.random, Math.floor) 본문
웹개발/JavaScript
[JavaScript] 중복을 제외하여 0부터 9까지 랜덤한 숫자 생성하기 (Math.random, Math.floor)
harusari 2023. 6. 13. 21:58📌 Math.random()
0(포함) 부터 1(미포함) 까지 랜덤한 부동소수점 숫자를 반환하는 함수
📌 0부터 9까지 숫자를 생성하고 싶다면?
Math.floor((Math.random() * 10))
Math.random() * 10을 통해 0(포함) 부터 10(미포함) 까지의 부동소수점 숫자가 생성됨
이를 Math.floor를 통해 내림 -> 주어진 숫자보다 크지 않은 정수를 반환
따라서 반환값은 0부터 9 사이의 정수가 됨
📌 1부터 9까지의 숫자를 생성하고 싶다면?
Math.floor((Math.random() * 9)) + 1
Math.random() * 9 를 통해 0(포함) 부터 9(미포함) 까지의 부동소수점 숫자를 생성한 뒤, Math.floor() 함수를 통해 정수로 변환.
이는 0부터 8까지의 정수를 반환하게 됨
마지막에 1을 더해주게 되면, 1부터 9까지의 숫자를 얻게 됨
📌 Math.floor() 를 비트연산자 ~ 로 수정하기
~~(Math.random() * 10);
비트연산자 ~를 사용하여 Math.floor()를 대신할 수도 있다.
📌 랜덤한 n자리의 숫자를 생성하고 싶다면? (0부터 9까지, 중복 미허용)
const pickRandomNum = (numLength) => {
let randomNums = [];
for (let i = 0; i < numLength; i++) {
let rn = ~~(Math.random() * 10);
if (randomNums.indexOf(rn) < 0) {
randomNums.push(rn);
} else i--;
}
return randomNums.join("");
};
pickRandomNum(3); //ex. 295;
numLength을 매개변수로 받아 랜덤한 n자리 숫자를 return하는 함수이다.
randomNum이 들어갈 곳을 배열로 만들어 놓고, numLength만큼 반복문을 돌아가도록 한 후 중복되는 숫자를 피하기 위해 indexOf(rn) < 0을 사용하였다.
join() 메서드를 통해 배열의 숫자를 String으로 합쳐주는 작업을 진행하였다.
반복 숫자를 허용하고 싶다면 if 조건문 부분을 삭제하면 된다.
📌 랜덤한 n자리 숫자를 생성하고 싶다면? (1부터 9까지, 중복 허용)
const pickRandomNum2 = (numLength) => {
let randomNums = [];
while (randomNums.length < numLength) {
let rn = ~~(Math.random() * 9) + 1;
randomNums.push(rn);
}
return randomNums.join("");
};
pickRandomNum2(3); //ex. 266
또 for문을 사용하면 재미 없으니까, while문으로 고쳐보았다.
이번에는 if부분을 삭제하여 중복을 허용하였고, 1부터 9까지의 숫자가 나오도록 만들었다.
'웹개발 > JavaScript' 카테고리의 다른 글
JavaScript의 비동기 처리 (Event Loop와 Call Stack) (0) | 2023.10.18 |
---|---|
[JavaScript] AJAX란? (XMLHttpRequest, Fetch, Axios) (0) | 2023.10.18 |
[JavaScript] 콜백 지옥, Promise, async/await에 대하여 (0) | 2023.10.18 |
동기,비동기 그리고 Promise의 Pending과 settled에 대하여 (2) | 2023.07.04 |
호출 스케줄링 - setTimeout, setInterval의 사용 (0) | 2023.06.24 |