[javascript] JavaScript에서 두 숫자 사이의 난수 생성
JavaScript에서 지정된 범위 (예 : 1에서 6 : 1, 2, 3, 4, 5 또는 6)의 난수를 생성하는 방법이 있습니까?
답변
중대한
다음 코드는 최소값이 인 경우에만 작동합니다 1
. 이외의 최소값에는 작동하지 않습니다 1
.
1 과 1 사이의 임의의 정수를 얻으려면 다음 과 같이 계산하십시오.
Math.floor(Math.random() * 6) + 1
어디:
- 1은 시작 번호입니다
- 6은 가능한 결과 수입니다 (1 + 시작 (6) -끝 (1) )
답변
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
“추가”는 1로 시작하지 않는 임의의 간격을 허용한다는 것입니다. 예를 들어 10에서 15 사이의 임의의 숫자를 얻을 수 있습니다. 적응성.
답변
Math.random ()
min ( 포함 )과 max ( 포함 ) 사이 의 정수 난수를 반환합니다 .
function randomInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
또는 min ( 포함 )과 max ( 포함되지 않음 ) 사이의 임의의 숫자 :
function randomNumber(min, max) {
return Math.random() * (max - min) + min;
}
유용한 예 (정수) :
// 0 -> 10
Math.floor(Math.random() * 11);
// 1 -> 10
Math.floor(Math.random() * 10) + 1;
// 5 -> 20
Math.floor(Math.random() * 16) + 5;
// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;
** 그리고 항상 상기시켜주는 것이 좋습니다 (Mozilla) :
Math.random ()은 암호로 안전한 임의의 숫자를 제공하지 않습니다. 보안과 관련하여 사용하지 마십시오. 대신 Web Crypto API를 사용하십시오.보다 정확하게는 window.crypto.getRandomValues () 메소드입니다.
답변
답변
TL; DR
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
난수를 얻으려면
generateRandomInteger(-20, 20);
아래 설명
최소와 최대 사이의 X 와 같은 임의의 정수를 가져와야합니다.
권리?
즉
최소 <= X <= 최대
방정식에서 min을 빼면 다음과 같습니다.
0 <= (X-최소) <= (최대-최소)
이제 임의의 숫자와 곱셈이 있습니다 R
입니다
0 <= (X-최소) * r <= (최대-최소) * r
이제 방정식에 최소값 을 다시 추가 합니다
최소 <= 최소 + (X-최소) * r <= 최소 + (최대-최소) * r
이제 우리의 방정식 범위가 [min, max]를 만족하도록 r이 되는 함수를 선택해 봅시다. 0 <= r <= 1 인 경우에만 가능합니다.
확인. 지금의 범위 (R)의 예 [0,1] 인 Math.random () 함수의 결과와 매우 유사하다. 그렇지 않습니까?
Math.random () 함수는 [0, 1) 범위의 부동 소수점 의사 난수를 반환합니다. 즉, 0 (포함)부터 1 (제외)까지는 포함하지 않음
예를 들어
사례 r = 0
min
+ 0 * ( max
– min
) = 분
사례 r = 1
min
+ 1 * ( max
– min
) = 최대
Math.random 0 <= r <1을 사용한 임의의 경우
min
+ r * ( max
– min
) = X. 여기서 X의 범위는 최소 <= X < 최대입니다.
위의 결과 X 는 임의의 숫자입니다. 그러나 Math.random ()으로 인해 왼쪽 경계가 포함되고 오른쪽 경계가 배타적입니다. 오른쪽 경계를 포함하기 위해 오른쪽 경계를 1 씩 늘리고 결과를 바닥에 둡니다.
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
난수를 얻으려면
generateRandomInteger(-20, 20)
;
답변
또는 밑줄로
_.random(min, max)
답변
var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;