← Lesson
Expectation and Variance
Joeven
Run
Reset
Python loads on first run
import random random.seed(2) outcomes = [ ("one_call", 0.70, 1.0), ("retry", 0.20, 2.0), ("human", 0.10, 5.0), ] e_cost = sum(p * c for _, p, c in outcomes) e_sq = sum(p * (c ** 2) for _, p, c in outcomes) var = e_sq - e_cost ** 2 std = var ** 0.5 print("E[cost]", e_cost) print("Var ", round(var, 4), "std", round(std, 4)) price_per_unit = 0.002 print("E[dollars]", e_cost * price_per_unit) def sample_cost(): r = random.random() acc = 0.0 for name, p, c in outcomes: acc += p if r <= acc: return c return outcomes[-1][2] n = 8000 xs = [sample_cost() for _ in range(n)] mean = sum(xs) / n var_hat = sum((x - mean) ** 2 for x in xs) / n print("simulated mean, var", round(mean, 4), round(var_hat, 4)) print("fraction over 3 units", sum(1 for x in xs if x > 3) / n)
Run to execute this in your browser. Nothing is sent to a server.