Блог пользователя Guliash

Автор Guliash, 11 лет назад, По-русски

Опишите реализацию процедуры Random(a,b), которая может использовать только один вызов — процедуры Random(0,1). Чему равно математическое ожидание времени работы вашей реализации и как оно зависит от a и b?
Random(0,1) — 50% вернёт 0, и 50 % вернёт 1.
Random(a,b) — с вероятностью 1/(b-a+1) вернёт число из интервала [a,b].
Гугл показывает реализации с побитовым (Random(0,1)) заполнением числа. Но многие из них у меня вызвали сомненния (одна выходит за интервал, другая показалась неравновероятной).

  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

CFBR78, задача B-div1 показывает, как можно написать процедуру Random(0,b-a). Понятно, что прибавляя a к результату, можно обобщить это на (a,b).