Basic sampling algorithms