I’m working on a stochastic model which heavily relies on random sampling from a list of items. Normally I turn to NumPy for this with its numpy.random.choice()
function. To my surprise, it turned out that random.sample()
(and random.choice()
) in Python’s standard library is quite a bit faster:
import numpy as np
x = np.arange(1000)
%timeit np.random.choice(x, replace=False)
gives me 16.2 µs ± 264 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each), while:
import random
x = list(range(1000))
%timeit random.sample(x, 1)
gives me 2.16 µs ± 32.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each).
Anyone an idea of what might be going on?