generate random num better