first one pass, then raondomly select