티스토리 뷰

소프트웨어는 어떻게 난수를 생성할까?

 

사실상 컴퓨터는 난수를 생성할 수 없다. 

엄밀히 말하면 pseudorandom numbers를 생성하는 것이다.

 

난수는 수학적인 방법으로 진행된다.

 

위는 유사 난수를 위한 공식이다.

유사 난수(pseudorandom number)는 난수를 흉내내기 위해 알고리즘으로 생성되는 값을 가리킨다.

이때 유사 난수를 생성하는 알고리즘을 유사 난수 생성기(pseudorandom number generator, PRNG)로 부른다.

예를 들어 5를 넣는다고 가정한다.

5 * 8 = 40이고 을 11로 나눈 값은 7이다. 

여기서 나온 결과 값을 다시 앞으로 보낸다.

그럼 7*8을 곱한 56을 11로 나눈 나머지인 1이 나온다.

위와 같이 결괏값을 앞으로 보내준다.

그러면 8을 11로 나눈 나머지인 8이 생성된다.

 

이런 과정을 거치면 랜덤 넘버를 생성하는 것처럼 보이지만

사실상 시퀀스를 반복하는 것이다. 

 

하지만 이도 문제점이 있다.

예상이 가능하다는 문제점이다. 

 

5로 시작했으면 발생하는 난수는 7 1 8 순으로 시작한다.

동일하게 다시 5로 시작해도 난수는 7 1 8 순으로 시작한다.

 

이렇게 되면 난수를 흉내 낸다고 말하기는 어렵다.

이에 대한 해결책으로 현재 시간의 밀리 세컨드를 구하고 그걸 모듈로로 구하는 방법이 있다.

난수는 사실상 시퀀스의 반복이며 예측 가능한 프로세스로 생성된다는 것을 알 수 있게 되었다.

'Tech > What I've Learned' 카테고리의 다른 글

유니코드와 UTF-8의 차이  (0) 2019.12.12
직렬화(Serialization)란  (0) 2019.12.05
머신러닝 추천 생성하기  (0) 2019.11.26
스트링  (0) 2019.10.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함