Randomized Algorithms
Define a property (or subroutine) in an algorithm
Sample or randomly modify the property
Use altered property as if it were the true property
Can transform average case runtimes into expected runtimes (remove input dependency).
Sometimes allows substantial speedup in exchange for probabilistic unsoundness.