shuffle过程

Shuffle过程

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

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

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

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

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

数学表达: 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)以保证不可预测性。

相关推荐
野生数据人20 分钟前
日志平台每日巡检我压成了一条命令链:从 SHOW BACKENDS 到扩缩容的完整步骤
大数据·数据库
liliangcsdn1 小时前
如何用DrissionPage进行网页自动化
大数据·自动化
野生数据人1 小时前
日志平台运维速查表:巡检命令、阈值、参数,一张贴墙
大数据·数据库
xiaogai_gai2 小时前
物料主数据从ERP同步到电商中台:基于轻易云的编码映射与增量全量双轨实践
大数据·数据库
SelectDB2 小时前
信创适配速查手册:国产 CPU / OS 对照表、认证许可速查与部署检查项清单
大数据·数据库·数据分析
亚川楼宇自控系统数据中心厂家2 小时前
机房 3D 可视化技术:从平面监控到立体化管理的升级
大数据·数据库·人工智能
LaughingZhu2 小时前
任务在飞书创建,开发在 Orca 继续:我把飞书项目接到了 Linear
大数据·人工智能·深度学习·神经网络·飞书
SelectDB2 小时前
部署形态与存算分离速查:形态对照、配置项清单与关键命令片段
大数据·数据结构·数据库
SelectDB2 小时前
Workload Group 参数速查:排队与并发配置、CPU 软硬限切换与常见配置问题清单
大数据·数据库·数据分析
智享 AI 科技2 小时前
2026年AI私域系统怎么选?从功能到服务的全维度对比
大数据·人工智能·经验分享