Abstract Monte Carlo radiative transfer, which has been demonstrated as a successful algorithm for modelling radiation transport through the astrophysical medium, relies on sampling of scattering phase functions. We review several classic sampling algorithms such as the tabulated method and the accept–reject method for sampling the scattering phase function. The tabulated method uses a piecewise constant approximation for the true scattering phase function; we improve its sampling performance on a small scattering angle by using piecewise linear and piecewise log-linear approximations. It has previously been believed that certain complicated analytic phase functions such as the Fournier–Forand phase function cannot be simulated without approximations. We show that the tabulated method combined with the accept–reject method can be applied to sample such complicated scattering phase functions accurately. Furthermore, we introduce the Gibbs sampling method for sampling complicated approximate analytic phase functions. In addition, we propose a new modified Henyey–Greenstein phase function with exponential decay terms for modelling realistic dust scattering. Based on Monte Carlo simulations of radiative transfer through a plane-parallel medium, we also demonstrate that the result simulated with the new phase function can provide a good fit to the result simulated with the realistic dust phase function.