adding the previous method. uniformally random shuffle