【发布时间】:2018-06-11 01:23:29
【问题描述】:
实现这一目标的绝对最快方法是什么?我每天会做超过 100 万次,所以我想要最大的效率。
使用 numpy(20 次运行后的平均值为 0.0001679009692429128)
t0 = time.clock()
print(np.random.randint(1,1000000))
t1 = time.clock()
print (t1-t0)
随机(平均:0.0000920492372555262)
t2 = time.clock()
print(random.choice(range(1,1000000)))
t3 = time.clock()
print (t3-t2)
令我惊讶的是,random 始终比 numpy 快。有更快的方法吗?
【问题讨论】:
-
每天一百万次对于一台计算机来说是一个非常小的数字。方法在这里无关紧要。
-
为什么不生成 100 万个数字,然后在需要时直接读取。
-
打印的时间比生成随机数的时间要多几个数量级。
-
调用
random.choices(range(1,1000000), k=1000000)大约需要半秒时间。如果您必须每天这样做一次,那真的不应该成为问题 -
“我想要最高效率”——你可能花在编写时序测试和编写这个问题上的时间比你的 CPU 每天生成一百万个数字所花费的时间还要多,即使你的程序每天运行你的余生。过早的优化不能有效地利用程序员的时间。