shuffle过程

Shuffle过程

Shuffle(随机重排)是计算机科学中用于将序列元素随机重新排列的过程。其核心目标是保证每个元素出现在任一位置的概率均等,即对于长度为n的序列,每个元素最终位于第i个位置的概率为\\frac{1}{n}

Shuffle的本质基于磁盘划分来解决分布式大数据量的**全局分组、全局排序、重新分区【增大】**的问题。

经典算法:费雪耶茨洗牌(Fisher-Yates Shuffle)

该算法通过逐步交换元素实现高效随机化:

  1. 从最后一个元素开始向前遍历
  2. 对当前元素i(从n-10),随机选择索引j0 \\leq j \\leq i
  3. 交换位置ij的元素

数学表达: $$ P(\text{元素移至位置}k) = \prod_{m=k}^{n-1} \frac{m}{m+1} \times \frac{1}{k} = \frac{1}{n} $$

复制代码
import random

def fisher_yates_shuffle(arr):
    n = len(arr)
    for i in range(n-1, 0, -1):
        j = random.randint(0, i)
        arr[i], arr[j] = arr[j], arr[i]
    return arr

特性

  • 时间复杂度:O(n)
  • 空间复杂度:O(1)
  • 无偏性:每个排列出现的概率均为\\frac{1}{n!}
应用场景
  1. 机器学习数据集随机化
  2. 卡牌游戏发牌
  3. 随机实验分组
  4. 密码学中的随机序列生成

注意:实际实现需使用密码学安全的随机数生成器(如CSPRNG)以保证不可预测性。

相关推荐
武子康1 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康2 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库3 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟3 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长3 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城3 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
中烟创新3 天前
灯塔AI智能体获评“2025-2026中国数智科技年度十大创新力产品”
大数据·人工智能·科技