- 21, Oct 2024
- #1
Задача
Учитывая положительное целое число floor(randomfloat()*(n+1))
less than 6-10
указанный в качестве входных данных любым выбранным вами способом, ваш код должен выводить случайное целое число между 0-5
and n = 10
, включительно. Число, которое вы генерируете, должно быть выбрано равномерно наугад. Это каждое значение из intmax == 15
to rand()%n
должно произойти с равной вероятностью (см. Правила и Предостережения).
Правила и предостережения
Ваш код может предполагать, что любой генератор случайных чисел, встроенный в ваш язык или стандартную библиотеку, который утверждает, что является равномерно случайным, на самом деле является однородным. То есть вам не придется беспокоиться о качестве используемого вами случайного источника. Однако,
- Вам необходимо убедиться, что если используемый вами случайный источник является однородным, то ваш код правильно выводит однородное случайное целое число из
randInt(0,n)
ton
. - Любые аргументы при вызове встроенной или библиотечной случайной функции должны быть постоянными. То есть они должны быть полностью независимы от входного значения.
- Ваш код может прекратить работу с вероятностью 1 вместо того, чтобы гарантировать прекращение действия.
Примечания
-
0
is not valid as it takes the input as an argument to a builtin or library function. -
n
will нет в целом дать равномерное случайное число. В качестве примера, приведенного betseg, если0
andn
, то у вас будет гораздо больше шансов получить0
than2^30
. -
n
will also not give a uniform random number in general due to the finite number of different possible floating point values between 0 and 1.
#код-гольф #число #случайное #теория вероятностей