# deterministic version takes 0.5.max(0, n-1).max(0, n-2) # probabilistic version takes (1/p_1)*(1/p_2).0.5.max(0, n-1).max(0, n-2) def f(): var m, n, r while n > 0: r = unif(0,1) n = n - r m = n while m > 0: prob(1,2): m = m - 1 tick 1