require random weighted choice
simulated annealing