스택큐힙리스트

자바스크립트에서 특정 범위 내에서 임의의 정수를 생성합니다. 본문

카테고리 없음

자바스크립트에서 특정 범위 내에서 임의의 정수를 생성합니다.

스택큐힙리스트 2024. 1. 21. 02:37
반응형

자바스크립트에서 두 지정된 변수 사이의 임의의 정수를 생성하는 방법은 무엇인가요? 예를 들어, x = 4y = 8이면 4, 5, 6, 7, 8 중 아무 수도 출력됩니다.

답변 1

정수를 얻기 위해 round, ceil, 또는 floor을 사용할 수 있습니다.


Math.round(Math.random() * (max - min)) + min을 사용할 수도 있지만, 이는 비균등한 분포를 생성합니다. minmax는 모두 약 절반의 확률로만 생성됩니다:


min...min+0.5...min+1...min+1.5   ...    max-0.5....max
└───┬───┘└────────┬───────┘└───── ... ─────┘└───┬──┘ ← Math.round()
min min+1 max

max를 구간에서 제외하면, min보다 더 적은 확률로 생성됩니다.


Math.floor(Math.random() * (max - min +1)) + min을 사용하면 완벽하게 균등한 분포를 얻을 수 있습니다.

최소 ... 최소+1 ... ... 최대-1 ... 최대 .... (최대+1은 구간에서 제외됩니다)
└───┬───┘└───┬───┘└─── ... ┘└───┬───┘└───┬───┘ ← Math.floor()
최소 최소+1 최대-1 최대

ceil()-1을 사용할 수 없습니다. 왜냐하면 최대는 조금 더 낮은 확률로 나올 수 있지만, (원치 않는) 최소-1 결과도 나올 수 있기 때문입니다.

답변 2

JavaScript에서 특정 범위 내에서 무작위 정수 생성하기
자바스크립트는 웹 개발에서 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 그 중에서도 무작위 정수 생성은 종종 필요한 작업 중 하나입니다. 웹 게임, 데이터 시뮬레이션, 테스트 용도 등 다양한 상황에서 무작위 정수 생성이 필요할 수 있습니다. 이번에는 특정 범위 내에서 무작위 정수를 생성하는 방법에 대해 알아보겠습니다.
자바스크립트에서 특정 범위 내에서 무작위 정수를 생성하는 가장 간단한 방법은 Math 객체의 메서드인 Math.random()을 사용하는 것입니다. Math.random() 함수는 0부터 1 사이의 난수를 생성합니다. 그러나 이 난수는 소수점 이하의 값을 갖기 때문에, 우리는 이를 정수로 변환해야 합니다.
특정 범위 내에서 무작위 정수를 생성하기 위해서는 원하는 범위의 최댓값과 최솟값을 알아야 합니다. 예를 들어, 1부터 10까지의 정수 중에서 무작위 한 숫자를 얻고 싶다면, 최솟값은 1이고 최댓값은 10이 됩니다.
Math.random() 함수를 사용하여 0에서 1 사이의 난수를 생성한 후, 우리는 이를 최댓값과 최솟값의 차이에 곱해줍니다. 그리고 나서 최솟값을 더하여 원하는 범위 내에서 무작위 정수를 얻을 수 있습니다. 마지막으로, 이 결과값을 Math.floor() 함수를 사용하여 소수점 이하 값을 제거하고 정수로 만들어줍니다.
다음은 이 과정을 코드로 나타낸 예시입니다.
```javascript
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var randomNumber = getRandomInt(1, 10);
console.log(randomNumber);
```
위의 코드에서 getRandomInt 함수의 매개변수로 최솟값 1과 최댓값 10을 전달하면, 1부터 10까지의 범위에서 무작위 정수를 생성하여 randomNumber 변수에 할당하고, 그 값을 콘솔에 출력합니다.
이렇게 자바스크립트에서 특정 범위 내에서 무작위 정수를 생성하는 방법을 간단히 배워보았습니다. 웹 개발이나 데이터 처리 과정에서 이러한 무작위 정수 생성 방법을 적절히 활용하면 다양한 기능을 구현할 수 있을 것입니다. 이를 통해 웹 사이트의 성능을 향상시키고, 사용자들에게 다양한 경험을 제공할 수 있을 것입니다.

반응형
Comments