728x90
javascript를 사용해서 난수를 만들때 Math.random() 을 활용합니다.
하지만, 그냥 사용할 경우 소수점이하로 나오기 때문에,
array, list 등 배열에서 랜덤하게 값을 가져올 경우 제대로 사용할 수 없습니다.
이번 게시물에서는 정수로 랜덤하게 값을 가져오는 방법을 설명하겠습니다.
Math.random() 사용법
0 이상 1 미만의 난수 생성하기
function getRandomDecimal() {
return Math.random();
}
최소값 최대값 사이의 난수 생성하기
function getRandomRange(min, max) {
return Math.random() * (max - min) + min;
}
최소값 최대값 사이의 정수 난수 생성하기
// min <= ??? < max (최소값 포함, 최대값 제외할 경우)
function getRandomRangeInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
// min <= ??? <= max (최소값, 최대값 포함 할 경우)
function getRandomRangeMaxInclusiveInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Junior 개발자에게 드리는 팁
자바스크립의 랜덤 함수는 현업에서 이미지를 랜덤하게 보여주거나,
순위를 랜덤하게 변경하는 경우에 많이 사용하는데,
이때 배열의 갯수를 반환하는 length 함수와 같이 사용하는 경우가 많아서
0부터 시작하는 배열의 특성으로 최대값 보다 무조건 -1이 되어야 하니,
최대값을 제외하고 가져오는 getRandomRangeInt() 함수가 많이 사용됩니다.
// min <= ??? < max (최소값 포함, 최대값 제외할 경우)
function getRandomRangeInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
$(document).ready(function () {
let arr = ['One', 'Two', 'Three', 'Four', 'Five'];
let randomInt1 = getRandomRangeInt(0, arr.length);
let randomInt2 = getRandomRangeInt(0, arr.length);
let randomInt3 = getRandomRangeInt(0, arr.length);
let randomInt4 = getRandomRangeInt(0, arr.length);
let randomInt5 = getRandomRangeInt(0, arr.length);
console.log(arr[randomInt1]);
console.log(arr[randomInt2]);
console.log(arr[randomInt3]);
console.log(arr[randomInt4]);
console.log(arr[randomInt5]);
});
Five
Five
Two
Two
One
간단하게 정수 랜덤 값을 가져오는 방법을 통해서 초보 개발자 분들에게 많은 도움이 되었으면 합니다.
반응형
'팁 & 노하우 > Javascript' 카테고리의 다른 글
vue3 js 목록에서 마우스 오버 시 글자, 버튼 등 나타나게 (0) | 2024.03.25 |
---|---|
뷰3 스타일 클래스 인라인 바인딩 (Vue.js 3 Style Class inline Binding) (0) | 2024.03.19 |
javascript, 엔터키 줄바꿈 쉽게 정규식으로 변경 (br 태그) (0) | 2024.03.05 |
javascript 천 단위 구분 기호 표시 (0) | 2024.03.05 |
moment "Invalid date" 에러 처리 하기 (0) | 2024.02.29 |