본문 바로가기

전체 글45

32bit? 64bit? 도대체 뭘 깔아야 하는데! 의사난수에 대한 이야기를 뒤로하고 다음 주제로는 컴퓨터의 bit에 대해 이야기해볼까 한다. "Office (32bit용)? Office(64bit)? 똑같은 거 아니야? bit가 뭔데?" 위와 같은 경험을 해본 분이 있을 거라고 생각한다. 여러분의 이해를 돕기 위해 설명하자면, 비트(bit)란 전구다.  보통 비트가 흔히 전구로 묘사되는 이유는 1(켜짐)과 0(꺼짐)의 상태를 가지기 때문이라고 할 수 있다. 그렇다. 비트는 0 또는 1이라는 2가지 상태를 저장할 수 있다. 현대에 존재하는 모든 컴퓨터는 이러한 비트를 뭉쳐 여러 정보를 표현한다. 1TB = 1024GB1GB = 1024MB1MB = 1024 KB1KB = 1024B1B = 8bit 여러분이 컴퓨터를 잘 모르더라도, 사용해보면서 한 번쯤은 .. 2024. 5. 1.
랜덤은 랜덤이 아니다? 난수는 어떻게 만들어 지는가 (2) 오늘은 저번 시간의 과제로 남겨두었던 난수가 실제로 어떻게 만들어지는지에 대해 써보려고 한다. 난수가 생성되는 방법은 여러가지가 있겠지만, 대표적으로 중앙제곱법, 선형합동법, 메르센 트위스터 등이 있다. 이전 시간에 이야기했던 난수표는 이러한 알고리즘들이 나타내는 수의 분포를 정리한 것이다. 이게 무슨 소리인지 이해가 가지 않을 수 있지만, 다음 공식을 보면 이해될 것이다. 위 식은 폰노이만이 1949년에 제안한 중앙 제곱법의 수식이다. 식을 살펴보면 X0가 시드가 될 것이다. a가 2고 시드(X0)로 88를 넣었다고 하면, 7744라는 결과가 나온다. 7744의 가운데 2자리가 Xn+1이 되므로 생성된 난수는 74가 된다. 수학에 밝은 사람이라면 이런 생각이 들 수도 있을 것이다.  "어? 이거 하다보.. 2024. 5. 1.
컴퓨터의 랜덤은 진짜 랜덤이 아니다? 의사 난수에 대한 이야기 (1) 약 6 년 만에 복귀한 첫 글의 주제로 선택한 것은 의사 난수( Pseudo Random )에 대한 이야기이다.의사난수에 대한 설명과 그와 관련된 알고리즘을 하나 소개해볼까 한다.  우리는 컴퓨터로 게임이나 작업, 하다 못해 누가 당첨일지 사다리 타기를 하면서까지 수많은 랜덤을 만나게 되는데, 가끔 '동시'에 서로 다른 사람이 랜덤을 뽑았을 때 동일한 결과를 가져본 적이 있을 것이다. ( 워크래프트나 스타크래프트를 해본 사람은 안다 )  마인크래프트 같은 로그라이크류 게임의 시작에서 어떤 특정한 Seed를 입력하니까 동일한 시작을 할 수도 있다. 그렇다면 이런 의문을 가져본 적이 있을 수도 있다.  "어, 이거 진짜 랜덤 맞아? 왜 똑같은 결과가 나오지?" 그렇다. 컴퓨터 속에 존재.. 2024. 4. 24.
동적 표를 이용하자. 동적표란 우리가 계산하면서 나온 결과값을들 저장해두는 표를 말한다. 이러한 행위를 왜 하는가? 관계기반 설계를 설명할 때, 탐색기반을 함께 설명했었다. 그때 탐색기반의 단점을 해소 하기 위해 '배제'를 한다고 했었는데 동적 표를 이용하여 비슷한 개념의 행위로 똑같은 효과를 낼 수 있다. 무슨 뜻이냐면, 이미 계산한 결과를 저장해두고, 중복되는 일이 있을때 그값을 꺼내 오기만 하면 된다. 이로써 중복된 연산을 피할 수 있고, 결론적으로 더 빠르고 효율적인 프로그램이 되는 것이다. 또한, 이전 값을 이용해서 다음 값들을 채워 나갈 수 있다. 이전 값이 반드시 필요한데 이건 관계 기반 설계에서 f(1)을 미리 구한 것과 같다. ex) 피보나치 수열 1) 동적 표를 사용하지 않은 방식 1234567int f(i.. 2016. 12. 18.