gpt4 book ai didi

python - 生成巨大列表的随机排列(在 Python 中)

转载 作者:太空狗 更新时间:2023-10-30 01:01:01 24 4
gpt4 key购买 nike

我想创建数字 [1,2,...,N] 的随机排列,其中 N 是一个大数字。所以我不想将排列的所有元素存储在内存中,而是迭代我的特定排列的元素而不在内存中保留以前的值。

知道如何在 Python 中做到这一点吗?

最佳答案

一种可能性是使用加密。由于加密是可逆的,即一对一,对于给定的 key ,您将得到与加密相同但顺序不同的数字。

您需要一个 block 大小足以包含您的最大 N 的 block 密码。在 ECB 模式下使用 DES 来获得 N = 2^64 - 1。在 ECB 模式下使用 AES 来获得 N = 2^128 - 1。对于其他大小,要么使用 Hasty Pudding cipher ,具有可变 block 大小,或者编写您自己的简单 Feistel cipher .我假设您只需要一个随机播放,而不是一个加密安全的随机播放。

如果输出大于N,则重新加密直到小于N,一对一的特性保证了大数链也是唯一的。

不需要将整个数组存储在内存中,可以根据需要对每个数字进行加密。只需要 key 和密码算法。一个轻微的并发症是分组密码在 [0 ... N-1] 上工作;您可能需要一些额外的代码来处理极端情况。

关于python - 生成巨大列表的随机排列(在 Python 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30615536/

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