KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'd like to create a random list of integers for testing purposes. The distribution of the numbers is not important. The only thing that is counting is time . I know generating random numbers is a time-consuming task, but there must be a better way. Here's my current solution: import random import timeit # Random lists from [0-999] interval print [random.randint(0, 1000) for r in xrange(10)] # v1 print [random.choice([i for i in xrange(1000)]) for r in xrange(10)] # v2 # Measurement: t1 = timeit.Timer('[random.randint(0, 1000) for r in xrange(10000)]', 'import random') # v1 t2 = timeit.Timer('random.sample(range(1000), 10000)', 'import random') # v2 print t1.timeit(1000)/1000 print t2.timeit(1000)/1000 v2 is faster than v1, but it is not working on such a large scale. It gives the following error: ValueError: sample larger than population Is there a fast, efficient solution that works at that scale? Some results from the answer Andrew's: 0.000290962934494 gnibbler's: 0.0058455221653 KennyTM's: 0.00219276118279 NumPy came, saw, and conquered.
Tags (comma-separated)
Save Edits
Cancel