sampling-based methods