RANDOM 통로 설명 문서 - 버전 1.0.0-draft
이 문서는 아희 유형 A 프로그래밍 언어 설명 문서에 언급되는 통로
를 구현하는 방법에 대해 설명하고 제시합니다. 해당 문서를 기본으로 하되, 해당 문서와 구현 방법에 대해 충돌이 일어날 경우, 이 문서를 존중하는 방향으로 구현하시기 바랍니다. 이 문서의 PASSAGE_SPEC
에 해당하는 이름값으로는 RANDOM
을 권장합니다만, 강제하지는 않습니다.
이 문서는 통로를 0 이상 32768 미만의 정수들의 나열로 쓰기 위해 만들어진 문서입니다. 이 통로를 적용할 경우 실행 중에 통로를 다른 통로로 교체할 수는 없으며, 이를 원하신다면 다른 설명 문서를 찾아보시기 바랍니다.
넣기 명령으로 인해 통로로 넣어지는 모든 값들은 모두 무시합니다. 통로에서 뽑아 나오는 값에 영향을 주지 않습니다.
0 이상 32768 미만의 랜덤한 정수를 뽑기 명령으로 인한 뽑아지는 값으로 제공합니다. 랜덤 알고리즘은 구현체마다 상이할 수 있습니다. 사용되는 랜덤 알고리즘은 통로에서 이전에 몇 번을 뽑았는지와는 상관없이 다음을 보장해야 합니다.
- 통로에서
x
번 뽑았을 때 0 이상 32768 미만의 정수가 모두 출현하는 자연수x
가 존재해야 합니다. - 랜덤 알고리즘이 미리 정해진 수열을 무한히 반복하는 구성이어서는 안 됩니다.
연속해서 같은 값이 뽑혀 나올 보장이 없을 경우, 다음을 따릅니다. 프로그램 실행 후 ㅃ
명령이나 ㅍ
명령을 통로에서 한 번도 실행하지 않았다면 같은 값이 뽑혀 나올 보장이 없는 경우입니다.
- 받침이 나타내는 값이 2 미만이거나
NEED_MORE_COPY
가UNSET
인 경우, 통로에서의ㅃ
명령은 뽑기 명령 시 두 번 연속 같은 값이 뽑혀 나올 것을 보장합니다.ㅍ
명령에 의해 이 보장은 파기될 수 있습니다. NEED_MORE_COPY
가SET
이고 받침이 나타내는 값이 2 이상인 경우, 받침이 나타내는 값을x
라고 했을 때 뽑기 명령 시x+1
번 연속 같은 값이 뽑혀 나올 것을 보장합니다.ㅍ
명령에 의해 이 보장은 파기될 수 있습니다.
연속해서 같은 값이 n
번 뽑혀 나올 보장이 있는 경우, 다음을 따릅니다.
- 받침이 나타내는 값이 2 미만이거나
NEED_MORE_COPY
가UNSET
인 경우, 기존 보장을 파기하고, 뽑기 명령 시n+1
번 연속 같은 값이 뽑혀 나올 것을 보장합니다.ㅍ
명령에 의해 이 보장은 파기될 수 있습니다. NEED_MORE_COPY
가SET
이고 받침이 나타내는 값이 2 이상인 경우, 기존 보장을 파기하고, 받침이 나타내는 값을x
라고 했을 때 뽑기 명령 시n+x
번 연속 같은 값이 뽑혀 나올 것을 보장합니다.ㅍ
명령에 의해 이 보장은 파기될 수 있습니다.
ㅃ
명령에 의한 보장을 파기합니다. 즉 ㅍ
명령이 적용됐을 경우 통로에서 뽑힌 값과 그 다음으로 뽑힌 값은 다를 수 있습니다.