230606 자바스크립트 random() 대안으로 getRandomValues()
Math.random()
0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 생성 -MDN
Math.random() // 0 <= x && x < 1
//0.7067886961595369
Math.random() - JavaScript | MDN
Math.random() 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용
developer.mozilla.org
crypto.getRandomValues()
암호학적으로 강력한 임의 값을 생성 - MDN
TypedArray를 매개변수로 받아 배열의 모든 요소에 대해 난수를 생성하여 덮어 씌운다.
기존 배열이 변경되고, 반환 값도 기존 배열이다.
const array = new Uint32Array(1);
self.crypto.getRandomValues(array);
/*
Uint32array
[
1466988879,
buffer: ArrayBuffer(4),
byteLength: 4,
byteOffset: 0,
length: 1,
Symbol(Symbol.toStringTag): 'Uint32Array'
]
*/
console.log(array===self.crypto.getRandomValues(array)) // true
Crypto: getRandomValues() method - Web APIs | MDN
The Crypto.getRandomValues() method lets you get cryptographically strong random values. The array given as the parameter is filled with random numbers (random in its cryptographic meaning).
developer.mozilla.org
getRandomValues로 만든 0~1사이의 수를 반환하는 함수
const getRandom = () => crypto.getRandomValues(new Uint8Array(1))[0] / 255;
이렇게 사용하면 통계적으로 한 쪽에 치우친 값을 반환하게 된다.
const getRandom = () => crypto.getRandomValues(new Uint32Array(1))[0] / (2**32);
이렇게 사용하는 것이 그나마 좋은 방법이다.
'내일배움캠프' 카테고리의 다른 글
230608 youtube iframe player api 볼륨 값 localStorage에 저장하고 불러오기 (0) | 2023.06.08 |
---|---|
230607 자바스크립트 타입을 고려해 sum() 함수 만들기 (0) | 2023.06.07 |
230605 타입스크립트 클래스 (0) | 2023.06.05 |
230604 내일배움캠프 3주차 WIL (0) | 2023.06.04 |
230603 TMDB 영화 관련 영상 가져와서 유튜브 iframe 모달 만들기 (0) | 2023.06.03 |