我怎么都洗牌,并把一个大列表分成小的列表,试图最大限度地提高速度?

我有一个大约100M +元素(当前sorting),我想随机(洗牌)和块/拆分成较小的列表(大约50K桶)列表。 在最大化速度方面做什么是最好的方法?

我打开任何库或语言(目前使用节点和Python的项目),如果他们有快速的预build方法。 谢谢!

PS这不仅仅是一个理论性的练习,我试图找出我的实习,因为我们将使用大约50K的数字海洋节点并行运行另一个脚本,将较小的列表作为input。

在C或C ++中以最高速度执行此操作。

在您的loggingarrays上使用“现代” Fisher-Yates随机播放 。 使用一个快速随机,也许发现堆栈溢出 。

然后,以bucksize(= 50000)偏移量返回数组中元素的地址,例如&array [0],&array [50000],&array [100000] …