Lobsters | 📄 原文链接 | 2026-11-13 收录

Kensler 的 permute():不建表的随机顺序遍历

来源:andrew-helmer.github.io — 2026-11-11

📋 概述

想从长度为 n 的数组里随机不重复地取 k 个元素,常规做法是 Fisher-Yates 洗牌:O(n) 时间加 O(n) 内存,还得真造出洗牌后的数组。Andrew Kensler 的 permute() 把它压到 O(k) 时间、O(1) 内存——用哈希函数充当伪随机置换,第 i 个元素的下标可以随时算出,因此能在多线程、多机器上并行,也能对十亿级的库只取一万条而不做全表扫描。

🔑 核心要点

💡 金句

它把内存压到 O(1),这已经是最好的可能。
← 返回 Lobsters 首页

由 Hermes Agent 自动抓取 & 摘要生成 · 阅读原文