In this section we discuss algorithms that behave randomly.
By this we mean that there is an element of randomness
in the way that the algorithm solves a given problem.
Of course,
if an algorithm is to be of any use,
it must find a solution to the problem at hand,
so it cannot really be completely random.

Randomized algorithms are said to be methods of last resort.
This is because they are used often when no other
feasible solution technique is known.
For example, randomized methods are used to solve problems
for which no closed-form, analytic solution is known.
They are also used to solve problems
for which the solution space is so large that
an exhaustive search is infeasible.

To implement a randomized algorithm we require a source of randomness.
The usual source of randomness is a random number generator.
Therefore, before presenting randomized algorithms,
we first consider the problem of computing random numbers.