> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 난수 생성기를 어떻게 시드할 수 있나요?

JavaScript에서 난수 생성기를 어떻게 시드할 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-03 06:24:14
원래의
583명이 탐색했습니다.

How Can I Seed Random Number Generators in JavaScript?

JavaScript에서 난수 생성기 시드

JavaScript에 내장된 Math.random()은 난수 생성기는 미리 결정된 난수 시퀀스를 생성하기 위해 특정 값으로 초기화할 수 없음을 의미합니다.

시드하는 동안 Math.random()에서는 불가능합니다. 시드 가능한 의사 난수를 생성하기 위한 사용자 정의 함수를 제공하는 외부 라이브러리 및 구현이 있습니다. 다음은 몇 가지 옵션입니다.

PRNG(의사 난수 생성기) 함수

JavaScript로 여러 가지 간결하고 효율적인 PRNG 함수를 구현하여 고품질 난수를 제공할 수 있습니다. 하나 이상의 32비트 숫자로 시드할 수 있습니다.

시드 초기화

생성된 숫자의 무작위성에 영향을 줄 수 있는 낮은 엔트로피 시드를 방지하려면 PRNG를 올바르게 초기화하는 것이 중요합니다. 다음은 두 가지 일반적인 방법입니다.

  • 해시 함수: 해시 함수는 짧은 문자열에서 시드를 생성할 수 있으므로 문자열을 시드로 사용할 수 있습니다. 예를 들어, cyrb128 해시 함수는 문자열에서 128비트 해시 값을 생성할 수 있습니다.
  • 더미 데이터 패딩: 또는 시드를 더미 데이터로 채우고 생성기를 한 단계 더 발전시킬 수 있습니다. 몇번에 걸쳐 초기상태를 잘 섞어주세요

PRNG 알고리즘

다음은 128비트 상태를 갖고 0-1 범위의 난수를 생성하는 sfc32(Simple Fast Counter) 알고리즘의 예입니다.

function sfc32(a, b, c, d) {
  return function() {
    a |= 0; b |= 0; c |= 0; d |= 0;
    let t = (a + b | 0) + d | 0;
    d = d + 1 | 0;
    a = b ^ b >>> 9;
    b = c + (c << 3) | 0;
    c = (c << 21 | c >>> 11);
    c = c + t | 0;
    return (t >>> 0) / 4294967296;
  }
}
로그인 후 복사

위 내용은 JavaScript에서 난수 생성기를 어떻게 시드할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿