我正在尝试对长序列的数字进行一些统计分析。这就要求对列表进行随机洗牌。测试是敏感的,因此公平性和随机性非常重要。该列表是100,000个整数,但我想尝试100万个。
NB。
公平重于效率或速度。
我可以访问/ dev / urandom。
美国NIST实验室在其熵测量套件SP800-90B EntropyAssessment中使用C ++进行此操作。它们对100万字节的序列进行排序。是@ https://github.com/usnistgov/SP800-90B_EntropyAssessment。
答案 0 :(得分:0)
您是否尝试过使用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
答案 1 :(得分:0)
您可以轻松地在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)