  We present a new Monte Carlo algorithm for studying site or bond percolation
on any lattice. The algorithm allows us to calculate quantities such as the
cluster size distribution or spanning probability over the entire range of site
or bond occupation probabilities from zero to one in a single run which takes
an amount of time scaling linearly with the number of sites on the lattice. We
use our algorithm to determine that the percolation transition occurs at
occupation probability 0.59274621(13) for site percolation on the square
lattice and to provide clear numerical confirmation of the conjectured
4/3-power stretched-exponential tails in the spanning probability functions.
