태스크
원하는 방식으로 입력으로 지정된 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가 더 일반적입니다.)0100n = 75rng()%75