Text this: Uses of randomness in algorithms and protocols /