Python 如何随机打乱包含 100,000 个项目的列表?
How can Python randomly shuffle a list of 100,000 items?
我正在尝试对长数字序列执行一些统计分析。这需要对列表进行随机洗牌。测试是敏感的,因此公平性和随机性非常重要。该列表是 100,000 个整数,但我想尝试 100 万个。
注意。
公平胜过效率或速度。
我可以访问 /dev/urandom。
美国 NIST 实验室在其熵测量套件 SP800-90B EntropyAssessment 中使用 C++ 来完成此操作。他们对 100 万字节的序列进行排序。这是@https://github.com/usnistgov/SP800-90B_EntropyAssessment.
你试过使用 numpy 的 shuffle
吗?
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.shuffle.html
或排列,如果你不想就地这样做:https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.permutation.html
您可以在 NumPy 中轻松打乱数百万个数字:
import numpy as np
data = np.arange(1e6)
%timeit np.random.shuffle(data)
# 32.7 ms ± 2.25 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
我正在尝试对长数字序列执行一些统计分析。这需要对列表进行随机洗牌。测试是敏感的,因此公平性和随机性非常重要。该列表是 100,000 个整数,但我想尝试 100 万个。
注意。
公平胜过效率或速度。
我可以访问 /dev/urandom。
美国 NIST 实验室在其熵测量套件 SP800-90B EntropyAssessment 中使用 C++ 来完成此操作。他们对 100 万字节的序列进行排序。这是@https://github.com/usnistgov/SP800-90B_EntropyAssessment.
你试过使用 numpy 的 shuffle
吗?
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.shuffle.html
或排列,如果你不想就地这样做:https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.permutation.html
您可以在 NumPy 中轻松打乱数百万个数字:
import numpy as np
data = np.arange(1e6)
%timeit np.random.shuffle(data)
# 32.7 ms ± 2.25 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)