improve the random