我正在尝试对长序列的数字进行一些统计分析。这需要对名单进行随机洗牌。测试是敏感的,所以公平性和随机性非常重要。这个列表是100000个整数,但我想试试100万。
NB。
-
公平胜过效率或速度。
-
我可以访问/dev/urandom。
-
美国NIST实验室在其熵测量套件SP800-90B EntropyAssessment中使用C++进行熵评估。它们对100万字节的序列进行排序。它是@https://github.com/usnistgov/SP800-90B_EntropyAssessment.
您可以在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)
您尝试过使用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