We describe an algorithm for perfect weighted-random sampling of a population with time complexity O(m + n) for sampling m inputs to produce n outputs. This algorithm is an incremental improvement over standard sampling algorithms. Our sampling algorithm is parallelizable, with linear speedup. Linear-time sampling yields notable performance improvements in our motivating example of Sequential Importance Resampling for Bayesian Particle Filtering.