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 小时前
Rust 练习册 80:Grains与位运算
大数据·算法·rust
练习时长一年2 小时前
git常用命令总结
大数据·git·elasticsearch
TDengine (老段)3 小时前
TDengine IDMP 重塑智慧水务运营(内附 Step by Step 步骤)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
萤丰信息7 小时前
智慧园区能源革命:从“耗电黑洞”到零碳样本的蜕变
java·大数据·人工智能·科技·安全·能源·智慧园区
中科岩创13 小时前
河北某铁矿绿色矿山建设二期自动化监测项目
大数据
java水泥工16 小时前
基于Echarts+HTML5可视化数据大屏展示-物流大数据展示
大数据·前端·echarts·html5·可视化大屏
paperxie_xiexuo16 小时前
学术与职场演示文稿的结构化生成机制探析:基于 PaperXie AI PPT 功能的流程解构与适用性研究
大数据·数据库·人工智能·powerpoint
汤姆yu17 小时前
基于大数据的出行方式推荐系统
大数据·出行方式推荐
bigdata-rookie17 小时前
Spark 部署模式
大数据·分布式·spark