Computability and complexity theory are two central areas of research in theoretical computer science. Until recently, most work in these areas concentrated on problems over discrete structures, but there has been enormous growth of computability theory and complexity theory over the real numbers and other continuous structures, especially incorporating concepts of "randomness." This book provides a systematic, technical development of "algorithmic randomness" and complexity. It presents concepts and results for understanding relative randomness and its relation to computational complexity. These new results are important for addressing fundamental problems in computational geometry, modeling of dynamic systems, and classical problems in numerical computations.