태스크
원하는 방식으로 입력으로 지정된 n
양보다 작은 양의 정수가 주어지면 2^30
코드는 0
및 사이의 임의의 정수를 출력해야 n
합니다. 생성하는 숫자 는 무작위로 균일하게 선택해야합니다 . 즉, 각 값 0
에 n
동일한 확률로 발생한다 (규칙 및주의 사항 참조).
규칙과주의 사항
귀하의 코드는 귀하의 언어 또는 표준 라이브러리에 내장 된 임의의 난수 생성기가 균일하게 임의라고 가정 할 수 있습니다. 즉, 사용중인 임의 소스의 품질에 대해 걱정할 필요가 없습니다. 하나,
- 사용하는 임의의 소스가 균일하면 코드가에서
0
로 균일 한 임의의 정수를 올바르게 출력하도록 설정 해야n
합니다. - 내장 또는 라이브러리 임의 함수를 호출 할 때 모든 인수는 일정해야합니다. 즉, 입력 값과 완전히 독립적이어야합니다.
- 귀하의 코드는 종료 가 보장되지 않고 확률 1로 종료 될 수 있습니다 .
노트
randInt(0,n)
입력을 내장 또는 라이브러리 함수의 인수로 사용하므로 유효하지 않습니다.rand()%n
것입니다 하지 일반적으로 균일 난수를 제공합니다. betseg에 의해 주어진 예를 들어, 경우intmax == 15
와n = 10
, 당신은 얻을 훨씬 더 가능성이있을 것0-5
보다6-10
.floor(randomfloat()*(n+1))
또한 0과 1 사이의 다른 가능한 부동 소수점 값의 유한 수로 인해 일반적으로 균일 한 난수를 제공하지 않습니다.
rng()
제공 하면 0-25가 더 일반적입니다.)0
100
n = 75
rng()%75