온라인 포커 사이트를 만들려고 한다. 이런 시스템에서 난수 생성기는 중요한 부품이고, 빠르면서 충분히 무작위여야 한다. 내가 생각한 절충안은 다음과 같다.
자릿수가 D 이하인 난수를 만들고 싶다. 먼저 10D 이하인 소수 P를 고른다. 음이 아닌 정수 A와 B도 고른다. 마지막으로 0 이상 P−1 이하인 정수 씨앗값 S를 고른다.
수열은 이렇게 만든다. 먼저 S를 출력하고, 다음 식으로 S를 갱신한다.
S:=(A×S+B)modP
갱신한 S를 수열의 다음 항으로 출력하고, 같은 식으로 S를 또 갱신한다. 이 과정을 원하는 만큼 반복한다.
이 난수 생성기가 좋다고 생각하는가? 이 방식으로 만든 수열에서 연속한 K개의 항을 읽어 그다음 항을 출력하는 프로그램을 작성하라.