Skip to content

Instantly share code, notes, and snippets.

@voyeg3r
Created March 12, 2010 10:44
Show Gist options
  • Save voyeg3r/330224 to your computer and use it in GitHub Desktop.
Save voyeg3r/330224 to your computer and use it in GitHub Desktop.
opções para aleatoriedade em python
# opções para aleatoriedade em python
# fonte: python-brasil http://bit.ly/dAmCPC
# Se você estiver fazendo algo sério, e quiser uma implementação decente pra
# essa geração de um vetor aleatório, deveria usar o Numpy.
#
# Postei um benchmark das soluções propostas e adicionei uma utilizando o
# Numpy (http://paste.pocoo.org/show/187702/), seguem os tempos que deram para
# mim:
#
# Tempo total (teste #1): 10.1679s
# Tempo total (teste #2): 3.1838s
# Tempo total (teste #3): 9.7410s
# Tempo total (teste #4): 3.5267s
# Tempo total (teste #5): 0.1241s --> este é o tempo utilizando o Numpy
#
# - Christian S. Perone
from timeit import Timer
from random import randint, shuffle, randint, sample
from numpy.random import randint as numpy_randint
SIZE = 200000
TIMES = 20
def test1():
vetor = []
for i in range(SIZE):
i = randint(1, SIZE)
vetor.append(i)
def test2():
vetor = shuffle(range(1, SIZE+1))
def test3():
vetor = [randint(1, SIZE) for i in xrange(1, SIZE+1)]
def test4():
vetor = sample(xrange(SIZE), SIZE)
def test5():
vetor = numpy_randint(1, SIZE, SIZE)
def test_method(num, times):
t = Timer("test%d()" % num, "from __main__ import test%d" % num)
print "Tempo total (teste #%d): %.4fs" % (num, t.timeit(times))
if __name__=='__main__':
[test_method(i, TIMES) for i in xrange(1,6)]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment