2022. 5. 11. 17:44ㆍProgram/JavaScript
022_임의의 수 (random number) 다루기
[적용]
- 임의의 확률을 사용해 작업을 처리하고 싶을 때
- 애니메이션에 임의의 값을 부여하고 싶을 때
[내용]
Math.random()은 0 이상 1 미만의 부동 소수점 유사 함수를 반환한다.
[문법]
메소드 | 의미 | 반환 |
Math.random() | 부동 소수점의 유사 난수를 반환 (0 이상 1 미만) | 숫자 |
[예시1]
Math.random(); // 0 이상 1 미만 임의의 소수
Math.floor(Math.random() * 100); // 0 이상 100 미만 임의의 정수
10 + Math.floor(Math.random() * 10); // 10 이상 20 미만 임의의 정수
[예시2]
버튼을 누를 때마다 색상을 임의로 바꾸는 샘플 코드를 통해 Math.random()을 알아보자.
HTML index.html
<!-- 버튼 -->
<button class="button">색상 변경</button>
<!-- 그라데이션이 표시되는 직사각형 -->
<div class="rectangle"></div>
CSS style.css
.rectangle {
width: 100%;
height: calc(100vh - 45px);
--start: hsl(0, 100%, 50%);
--end: hsl(322, 100%, 50%);
background-image: linear-gradient(-135deg, var(--start), var(--end));
margin-top: 5px;
}
JavaScript main.js
/** 직사각형 */
const rectangle = document.querySelector('.rectangle');
// 버튼 클릭 시 onCLickButton() 실행
document.querySelector('.button').addEventListener('click', onClickButton);
/** 버튼을 누를 때마다 그라데이션 색상을 변경 */
function onClickButton() {
// 0~359 사이 임의의 수를 가져오기
const randomHue = Math.trunc(Math.random() * 360);
// 그라데이션의 시작과 끝 색상을 결정
const randomColorStart = `hsl(${randomHue}, 100%, 50%)`;
const randomColorEnd = `hsl(${randomHue + 40}, 100%, 50%)`;
// 직사각형의 그라데이션 처리 변수
rectangle.style.setProperty('--start', randomColorStart);
rectangle.style.setProperty('--end', randomColorEnd);
}
[실행결과]
버튼을 누를때 마다 색상이 바뀌는 것을 확인할 수 있다.
Appendix
안전한 난수 사용은 crypto.getRandomValus()
메소드 | 의미 | 반환 |
crypto.getRandomValues(타입지정배열) | 난수의 배열을 반환 | 배열 |
비밀번호 등 정보 보호가 중요한 문자열을 생성할 때는 Math.random()보다 crypto.getRandomValues()를 사용한다.
인수에 타입 지정 배열과 값을 전달하면 값의 난수 배열을 생성한다.
다음 코드를 통해 확인해보자
// 임의의 정수 (부호없는 16비트) 10개가 들어 있는 배열을 생성
// 예: [8918, 14634, 53220, 62158, 64876, ...)
const randomArray1 = crypto.getRandomValues(new Uint16Array(10));
// 배열의 요소를 연결하여 난수를 생성
// 예: 89181463453220621586....
randomArray1.join('');
// 부호 없는 32비트의 배열 난수를 생성
// 예: 89030296873337467400372283...
crypto.getRandomValues(new Uint32Array(10)).join('');
참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서 삼각 함수 사용하기 (0) | 2022.05.13 |
---|---|
[JavaScript] 자바스크립트에서 수학(계산) 함수 사용하기 (0) | 2022.05.12 |
[JavaScript] 자바스크립트 어림수 계산하기 (반올림, 올림, 버림) (0) | 2022.05.10 |
[JavaScript] 자바스크립트에서 숫자 다루기 (0) | 2021.05.05 |
[JavaScript] 자바스크립트에서 진위 여부(true or false) 판별하기 (Boolean) (0) | 2021.05.05 |