added random generate