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 | 31 | 
                            Tags
                            
                        
                          
                          - react native
- CS
- react
- react animation
- async
- hydration mismatch
- promise.all
- motion.div
- named type
- Swift
- Promise
- axios
- debounce
- await
- 비동기
- no-permission-handler-detected
- Throttle
- ios
- animation
- react-native-permissions
- RN업데이트
- javascript
- Hash-table
- private-access-to-photos
- RN새로운아키텍쳐
- react-native
- react-native-image-picker
- rn
- React-Native업데이트
- RN아키텍쳐
                            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)) + 1Math.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 | 
