로또 번호 생성 알고리즘 코드를 javascript로 작성해보았다.
Math.random();
Math.random()*45;
Math.random()*45 + 1;
0 이상 ~ 45 미만 실수에 +1씩 더해준다.
그러면 1이상 ~ 46미만 실수 중에
랜덤으로 하나를 뽑을 수 있게 된다.
parseInt();
실수(float)를 정수(int)로 변환
→ 소수점을 버린다.
45개의 공들 중, 공 하나를 뽑는 로직
※ 공 6개를 뽑기 위해서,
위와 같은 변수를
6개 만드는 것은 비효율적!!
- 배열, push
배열(array) 자료구조
- 하나의 변수 안에 여러 개의 값들을 담을 수 있다.
→ index(위치 번호)로 값을 꺼낼 수 있다.
첫번째 값은 0부터 시작한다.
.push()
- 마지막 값 추가
빈 배열에 push 6개 추가해서,
공 6개 번호 출력
*조금씩 로또 번호 생성 알고리즘이 다듬어지고 있다.
DRY
(Don't repeat yourself)
반복되는 작업을 하지 말라는 프로그래밍 철학.
→ for, while문으로 해결 가능
*
i가 0부터, 반복하려는 코드를 한번씩 실행
→ 종료될때마다 i가 1씩 증가
이런 식으로 실행/증가/반복을 계속하다가,
i가 6보다 작다는 조건이 깨지면서 종료
6개 랜덤 숫자 뽑기를 만드는 것은 성공했으나,
따로 처리를 안했기에
하나의 배열 안에 중복된 값이 여럿 들어갈 수 있다.
중복이 아닐 경우, .push()
중복일 경우 패스시켜주는 로직이 필요하다.
.indexOf(값)
값이 들어가 있을 때: 위치 index 출력
없을 때 : -1 출력
※ 숫자가 안에 없을 때, '-1'
조건문 안 쪽의 코드가 실행되도록 한다.
배열 안에 값이 없을 때만, push!
(중복 값 처리)
위에서 중복되는 번호가 아닐 때에만
배열에 숫자를 집어 넣었다.
중복된 값이 있을 경우,
하나가 빠져서 5개만 출력되는 사태가 생긴다.
*해결법
for문: 공을 6번 뽑는다 (x)
while문: 공이 6개가 될 때까지 반복한다 (o)
반복문
for: 특정 횟수만큼 코드를 동작시킬 때 사용
while : 특정 조건까지 계속 반복
.length
배열의 길이
(배열 안에 몇 개의 값이 들어있는지 알려줌)
→ 공이 6개가 되는 순간, 빠져나온다.
.sort()
배열의 값들을 사전순으로 정렬
→ 맨 앞자리 숫자 기준으로 정렬
var lotto = [1,2,3,33,22,11];
lotto.sort((a,b)=>a-b);
document.write(lotto);
숫자 크기 순으로 정렬하기
a-b : 오름차순 정렬
b-a : 내림차순 정렬
See the Pen Untitled by 듀 (@jgvoseid-the-styleful) on CodePen.
완성 화면!!
글자 수 계산기 프로그램 직접 만들기 (0) | 2022.01.26 |
---|---|
[Node.js] 블로그 웹사이트 만들기-1 (기본세팅,router,요구사항 명세서 get까지) (0) | 2022.01.07 |
셀렉트박스 커스텀(select box custom) ul, li로 만들기 (0) | 2021.11.30 |
자판기 만들기 (vending machine project): 마크업 작업(html)_1 (0) | 2021.11.22 |
1-2. 홈페이지 제작: css 입히기 (값 초기화, css.reset) (0) | 2021.10.05 |
댓글 영역