add random gradient descent