我想为测试目的创建整数的随机列表。数字的分布并不重要。唯一的事情是时间。我知道生成随机数是一个耗时的任务,但必须有一个更好的方法。
这是我目前的解决方案:
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比v1快,但是没有工作这么大规模。它给出以下错误:’ValueError:sample大于population
”
你知道一个快速,高效的解决方案,工作在规模吗?
编辑:
安德鲁的:0.000290962934494
gnibbler’s:0.0058455221653
KennyTM的:0.00219276118279
NumPy来了,锯,征服了
谢谢!