Computability, Complexity and Randomness