Randomized Algorithms for Combinatorial Scientific Computing