ITES 문제에서 선형 합동 난수 생성기 질문드립니다.

  • Signin
    Signin

    안녕하세요~
    ITES 문제를 풀고 나서
    문제 해결 전략 책을 보았는데요,
    여기에서 선형 합동 난수 생성기의 구현이 이해가 가지 않아
    이렇게 질문드리게 되었습니다.

    제가 짠 코드는 아래와 같습니다.
    매번 부를때마다, 전역 변수인 seed가 바뀌는 형태입니다.

    seed = 1983;
    
    int signal()
    {
        unsigned ret = seed;
    
        seed  = (seed * 214013u) + 2531011u;
    
        return (ret % 10000 + 1);
    }
    

    책에서 나온 코드는 아래와 같습니다.

    struct RNG {
        unsigned seed;
        RNG() : seed(1983) {}
        unsigned next() {
            unsigned ret = seed;
            seed = ((seed * 214013u) + 25311011u);
            return ret % 10000 + 1;
        }
    };
    

    보기에는 같은 원리인 것 같은데,
    RNG() : seed(1983) {} 줄부터의 문법이 잘 이해가 가지 않아서
    질문드리게 되었습니다.

    이에 대한 정보를 얻으려먼 어떻게 검색을 하면 될까요?
    알려주시면 감사하겠습니다~!


    11년 전
5개의 댓글이 있습니다.
  • Being
    Being

    Wikipedia 를 참조하세요.


    11년 전 link
  • Kureyo
    Kureyo

    같은 원리에요 한쪽은 멤버변수를 사용한것일뿐..


    11년 전 link
  • Signin
    Signin

    먼저 이 글을 질문게시판이 아니라 자유게시판에 올려서 죄송합니다.
    처음 올릴 때는 분류를 클릭했었는데,
    글을 날려먹고 재작성하면서 체크를 못했습니다.ㅎ
    옮기도록 하겠습니다~

    Being // 좋은 링크 감사합니다~!
    Kureyo // 그렇군요.. 처음 보는 문법이라서 질문드리게 되었습니다.


    11년 전 link
  • Being
    Being

    저 키워드에서부터 출발해 슥 둘러보시면 책에 수록된 코드는 웬만하면 이해가 되실 거라 생각하는데, 기회 되시면 C++을 제대로 공부해 보시는 것도 좋은 경험이 되실 거예요 :)


    11년 전 link
  • Signin
    Signin

    Being // 주신 링크를 보니 이해가 잘 갑니다 ㅎㅎ
    Java 클래스의 생성자와 멤버 함수와 같은 역할이군요~
    이 책을 보느라 C++은 딱 STL의 일부분만 공부했는데,
    더 넓은 세계가 있었네요~ 좋은 조언 주셔서 고맙습니다~!


    11년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.