what are the options to implement random search?
Generally, you don't need to use ray.tune.suggest.BasicVariantGenerator(). 
For the other two choices, it's up to what suits your need. tune.randint() is just a thin wrapper around tune.sample_from(lambda spec: np.random.randint(...)). You can do more expressive/conditional searches with the latter, but the former is easier to use.
So i want to implement random search but there is no clear cut example as to how to do this. I am confused between the following methods:

tune.randint()
ray.tune.suggest.BasicVariantGenerator()
tune.sample_from(lambda spec: blah blah np.random.choice())

Can someone please explain how and why these methods are same/different for implementing random search.