개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.10 18:14

Xoshiro256StarStar 난수 발생 엔진 jumpLong 메서드 이해를 도와주세요

목록
  • Scala마법사 4일 전 2025.05.10 18:14
  • 7
    1
제가 공부하는 RandomEngineXoshiro256StarStar 클래스의 jumpLong 메서드에 대해 이해가 부족합니다.
jumpLong 메서드가 하는 일은 무엇이며, 내부적으로 어떻게 작동하는지 설명해주시겠어요?
특히, seed 값이 어떻게 갱신되는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  4일 전



    Xoshiro256StarStar 난수 발생 엔진의 jumpLong 메서드는 64비트 정수 값을 생성하고, seed 값을 갱신하는 메서드입니다.

    jumpLong 메서드는 내부적으로 256비트의 상태 변수를 사용하여, 64비트 정수 값을 생성합니다.

    이 메서드는 4개의 32비트 정수 변수를 사용하여, 상태 변수를 갱신하고, 64비트 정수 값을 생성합니다.

    jumpLong 메서드의 내부 동작은 다음과 같습니다.

    1. 4개의 32비트 정수 변수를 XOR 연산하여, 32비트 정수 값을 생성합니다.
    2. 생성된 32비트 정수 값을 32비트 정수 변수의 첫 번째 변수에 할당합니다.
    3. 32비트 정수 변수의 첫 번째 변수를 5비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    4. 32비트 정수 변수의 두 번째 변수를 26비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    5. 32비트 정수 변수의 세 번째 변수를 22비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    6. 32비트 정수 변수의 네 번째 변수를 18비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    7. 생성된 32비트 정수 값을 XOR 연산하여, 32비트 정수 값을 생성합니다.
    8. 생성된 32비트 정수 값을 32비트 정수 변수의 첫 번째 변수에 할당합니다.
    9. 32비트 정수 변수의 첫 번째 변수를 5비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    10. 32비트 정수 변수의 두 번째 변수를 26비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    11. 32비트 정수 변수의 세 번째 변수를 22비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    12. 32비트 정수 변수의 네 번째 변수를 18비트 오른쪽으로 shift 연산하여, 새로운 32비트 정수 값을 생성합니다.
    13. 생성된 32비트 정수 값을 XOR 연산하여, 64비트 정수 값을 생성합니다.

    seed 값은 jumpLong 메서드의 호출 시점에 갱신됩니다. seed 값은 64비트 정수 값의 하위 32비트에 해당하는 값을 갱신합니다.

    2025-05-10 18:15

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 19,411건 / 1 페이지

검색

게시물 검색