Generating a large random string

Sean Ross sross at connectmail.carleton.ca
Fri Feb 20 01:10:11 CET 2004


Here's a sample with replacement, where k can be greater than
len(population):

from random import random, seed
from string import letters
from time import clock as now

# derived from random.sample code ... scarcely tested
def sample(population, k):
    """Chooses k random elements from a population sequence. """
    n = len(population)
    result = [None] * k
    for i in xrange(k):
        j = int(random() * n)
        result[i] = population[j]
    return result

n = 1000000
seed(14)
start = now()
s = ''.join(sample(letters, n))
took = now() - start
print "sample with replacement  n: %d took: %2.2fs"%(n, took)

# Output
>>> sample with replacement  n: 1000000 took: 7.68s

Even faster than before, and more correct to boot, heh.






More information about the Python-list mailing list