소개
다음과 같은 구현으로 임의의 정수 생성기가 제공됩니다.
- 첫 번째 호출은 항상 1을 반환합니다.
- 두 번째 호출은 1과 2 사이의 임의의 정수를 반환합니다.
- 세 번째 호출은 1과 3 사이의 임의의 정수를 반환합니다.
- n 번째 호출은 1과 n 사이의 임의의 정수를 리턴합니다.
위의 함수를 기반으로 완벽하게 무작위 인 임의의 주사위 생성기를 작성하여 동일한 확률로 1과 6 사이의 값을 반환합니다.
규칙
- 프로그램 / 함수는 1에서 6 사이의 임의의 정수를 포함하여 사용 가능한 형태로, 즉 표준 출력 또는 함수 반환 값으로 사용해야합니다.
- 위의 오름차순 난수 생성기는 프로그램에서 "자유로운"기능으로 정의되거나 (즉, 문자 수에 포함되지 않음) 상태 (
n)가 지속적 이라고 가정하고 필요에 따라 실행되는 별도의 스크립트 / 프로그램으로 정의 될 수 있습니다. 통화 사이. - 프로그램의 단일 사용 사례에서 1000 개 이하의 주사위 롤이 요청되지 않고 1000 주사위 롤
1끝에서 초기 난수 생성기를 재설정하여 오버플로를 피할 수 있다고 가정n합니다. - 여러분의 프로그램은 사용할 수 없습니다 어떤 위에서 정의 된 상승 랜덤 생성기를 제외한 임의의 숫자의 다른 소스를. 물론 각 단일 주사위 롤 출력에 대해 난수 생성기에서 여러 난수를 요청할 수 있습니다.
- 이것은 코드 골프이므로 승자가 가장 짧은 답변이거나 동점 일 경우 가장 많은 표를 얻습니다. 1000 개 미만의 생성 된 난수를 사용하여 1000 개의 주사위 롤을 생성 할 수있는 경우 10 점 효율 보너스를 제공하십시오 .
예
./asc-rand
1 # random integer between 1 and 1
./asc-rand
1 # random integer between 1 and 2
./asc-rand
3 # random integer between 1 and 3
./asc-rand
4 # random integer between 1 and 4
# dice-gen generates random dice based on output of asc-rand program.
./dice-gen
3
./dice-gen
6
./dice-gen
5
./dice-gen
1
iterate(6):b=asc-rand(); print b불법입니까 아니면 작동하지 않습니까? 세 번째 규칙을 오해하고있을 수 있습니다.