use shuffle instead of rand()