빙디용이 자바로 로또 번호 생성 프로그램 짠거보고 따라해봤다.
어떤 게 더 정확한지 겨뤄보자고
/**
* 범위 내의 임의의 정수 값을 구하는 함수
*
* @param {number} min 최소값(포함)
* @param {number} max 최대값(미포함)
* @returns randomNumber
*/
const getRandomNumber = (min, max) => {
return Math.floor(Math.random() * (max - min) + min);
};
/**
* 중복 없는 임의의 정수로 이루어진 배열을 생성하는 함수
*
* @param {number} num
* @returns num개의 난수로 이루어진 배열
*/
const getNumbers = (num = 6) => {
const lottoNumbers = [];
// 6개의 로또 번호를 모두 뽑을 때까지 반복
while (lottoNumbers.length < num) {
const lotto = getRandomNumber(1, 46);
// 중복된 번호는 배열에 넣지 않고 통과한다.
if (lottoNumbers.includes(lotto)) continue;
lottoNumbers.push(lotto);
}
return lottoNumbers;
};
const lottoGenerator = () => {
for (let i = 0; i < 5; i++) {
console.log("로또 번호 : ", ...getNumbers());
}
};
lottoGenerator();
재사용할 일은 없지만... 그래도 함수를 분리해봤다.
자바스크립트의 Math.random 메서드의 경우 0이상 1미만의 난수를 반환한다.
그렇기 때문에 Math.random() * (max - min) 식의 계산 결과 범위는 0이상 (max - min)미만 이다.
즉, 위의 식에서는 0 ~ 44가 된다. 그래서 min 값인 1을 더해주면 원하는 범위 조건을 충족할 수 있다.
다음에는 파이썬으로 짜보고 더 정확한걸로 골라서 써야겠다 (라고 로또 안 사는 사람이 말합니다)
'Javascript' 카테고리의 다른 글
[ Javascript ] 정렬 함수 (sort, toSorted, localeCompare) (0) | 2024.07.16 |
---|---|
input 자동완성 해제 (autocomplete) (0) | 2024.07.12 |
[ Javascript ] Input 소수점 2자리까지만 입력되도록 제한 (정규표현식) (1) | 2024.04.26 |
"b" + "a" + +"a" + "a" = 'baNaNa' ??!!!!! (0) | 2024.04.18 |
[ Javascript ] 문자열을 숫자로 형변환하는 3가지 방법 (0) | 2024.03.28 |