[JavaScript] 배열 무작위 정렬(랜덤 정렬)

haha-rumi·2022년 3월 29일
0

JavaScript

목록 보기
1/6
post-thumbnail
post-custom-banner

원티드 프리온보딩 기업 과제를 진행하면서 리스트 정렬 중, 랜덤 정렬 구현을 하는 부분이 있어서 JavaScript 배열 랜점 정렬 방법을 알아보았다.

Math.random()

Math.random()는 난수를 생성하는 메서드다. 난수는 정의된 범위내(기본 0~1사이)에서 값에 소숫점을 붙여서 무작위로 숫자를 추출한다. 보통 광고나 이미지 등을 랜덤으로 보여줘야 할 때 사용한다.

Math.random();

Math.random() 최대값 지정

난수의 범위 지정은 곱하기 * 기호로 최대값 설정이 가능하다. 최대값 설정은 Math.random()에 원하는 최대값을 곱해주면 된다.

Math.random() * 최대값
Math.random() * 10

Math.random() 최소값 지정

최소값을 지정할 경우, 아래와 같이 수식 수정이 필요하다.

( Math.random() * ( 최대값 - 최소값 )  ) + 최소값

최소값은 + 더하기 기호로 원하는 최소값을 더해주는데, 최대값과 달리 최소값은 더하기로 들어가기 때문에 최대값도 동시에 변하게 된다. 따라서 최소값을 지정할 때에는 최대값에도 피해가 가지 않도록 셋팅이 필요하다.

0 ~ 1 → 양변에 10을 곱하면, 0 ~ 10으로 최대값만 변함
0 ~ 1 → 양변에 1을 더하면, 1 ~ 2로 최소값과 최대값이 모두 변함

최소값만 지정시 문제점

해당 수식에 + 1을 더하면 난수의 생성 범위는 1 ~ 11이 된다.

( Math.random() * 10 ) + 1

소숫점 삭제

소숫점을 삭제하고 싶을 때는 Math.floor() 메소드를 사용한다.

Math.floor( ( Math.random() * 10 ) )

베열 랜덤 정렬

const shuffle = () => ( Math.random() - 0.5 );
const quizs = [0,1,2,3,4,5,6,7,8,9,10];
const shuffled = [...quizs].sort(shuffle);

console.log("quizs", quizs)
console.log("shuffled quizs", shuffled)

참고 사이트

https://codiving.kr/54
https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-math-random-%EB%B2%94%EC%9C%84-%EC%9E%90%EB%A6%BF%EC%88%98/

MDN 공식사이트

profile
개발자 한 발
post-custom-banner

0개의 댓글