본문 바로가기
Java script

JavaScript_자바스크립트 Math.random() 외 난수 생성하는 방법

by 디디찐 2022. 8. 16.
반응형

1. Math.random()

Math.random() 는 0이상 1미만의 구간에서 난수를 생성하는 메서드

//기본 문법
Math.random(); 
//출력예시
document.write(Math.random());   // => 0.9751258465223

2. Math.random() 사용법

- 두 값 사이의 난수 생성하는 법  (min보다 크거나 같으며 max보다 작다)

Math.random() * (max - min) + min;

document.write(Math.random()*( 10 - 1 ) + 1 ); // =>출력예시 9.7584512223

 

- 두 값 사이의 난수 정수 생성하는 법  (min보다 크거나 같으며 max보다 작다)

    Math.floor()  주어진 숫자와 같거나 더 작은 정수중에서 가장 큰 값을 반환

Math.floor( Math.random() * (max - min) ) + min;

document.write(Math.floor( ( Math.random() * (10 - 1) + 1 ) ) ); // 출력예시 => 2

 

Math.random() 의 경우 암호학적으로 안전한 난수를 제공하지 않기 때문에

MDN의 메소드를 보면  Web Crypto API의 window.crypto.getRandomValues() 이용을 권장한다.

 

 

3. Crypto.getRandomValues() 메서드로 암호학적으로 강력한 난수를 생성하기

Crypto.getRandomValues() 메서드는 메서드는 암호학적으로 강력한 난수를 생성할 수 있다.

//기본 문법
cryptoObj.crypto.getRandomValues(typedArray)

typedArray로는 Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array 중 사용하면 된다. 

참고: https://developer.mozilla.org/ko/docs/Web/API/Crypto/getRandomValues

 

console  실행예시

 

실행예시1
실행예시2

4. Math.random() 과  getRandomValues() 비교

두 메소드의 차이점이 정리된 블로그도 참고해보세요.

 

https://velog.io/@two_jay/%EB%82%9C%EC%88%98-%EC%83%9D%EC%84%B1-%ED%95%A8%EC%88%98-%EC%95%BC%EB%B0%94%EC%9C%84-%EC%9E%98-%EC%84%9E%EB%8A%94-%EB%B2%95-0vbqtb3r

 

난수 생성 함수 : 야바위 잘 섞는 법

Math.random와 Crypto.getRandomValues 함수를 알아보고 비교하여 보자.

velog.io

 

 

반응형