gpt4 book ai didi

python - 在 Python 中创建随机整数列表

转载 作者:IT老高 更新时间:2023-10-28 21:38:39 27 4
gpt4 key购买 nike

出于测试目的,我想创建一个随机整数列表。数字的分布并不重要。唯一重要的是时间。我知道生成随机数是一项耗时的任务,但一定有更好的方法。

这是我目前的解决方案:

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 larger than population

是否有适用于这种规模的快速、高效的解决方案?

答案的一些结果

安德鲁的:0.000290962934494

咬人的:0.0058455221653

KennyTM 的:0.00219276118279

NumPy 出现、看到并征服了。

最佳答案

不完全清楚你想要什么,但我会使用 numpy.random.randint :

import numpy.random as nprnd
import timeit

t1 = timeit.Timer('[random.randint(0, 1000) for r in xrange(10000)]', 'import random') # v1

### Change v2 so that it picks numbers in (0, 10000) and thus runs...
t2 = timeit.Timer('random.sample(range(10000), 10000)', 'import random') # v2
t3 = timeit.Timer('nprnd.randint(1000, size=10000)', 'import numpy.random as nprnd') # v3

print t1.timeit(1000)/1000
print t2.timeit(1000)/1000
print t3.timeit(1000)/1000

在我的机器上给出:

0.0233682730198
0.00781716918945
0.000147947072983

请注意,randint 非常与 random.sample 不同(为了让它在你的情况下工作,我必须将 1,000 更改为 10,000,正如其中一位评论员指出的那样——如果你真的想要它们从 0 到 1,000,你可以除以 10)。

如果你真的不在乎你得到了什么分布,那么你可能不是很了解你的问题,或者是随机数——如果这听起来很粗鲁,请道歉......

关于python - 在 Python 中创建随机整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com