推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

随机算法的实用技巧:洗牌 随机抽样与哈希冲突处理.docx

更新时间:2026-10-11 09:50:40 大小:40K 上传用户:烟雨查看TA发布的资源 标签:随机算法Fisher-Yates洗牌随机抽样哈希冲突布隆过滤器 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

随机算法的实用技巧:洗牌、随机抽样与哈希冲突处理

随机算法(Randomized Algorithm)利用随机数来指导算法的运行,它在很多场景下能以极高的概率、极简的实现解决复杂问题。从经典的洗牌、随机抽样,到布隆过滤器、随机化快速排序,随机算法在工程与竞赛中都有广泛应用。本文将介绍几类实用技巧,并剖析其背后的概率保证。

洗牌算法:Fisher-Yates

洗牌是要把  个元素随机排列,使得每种排列出现的概率相等。最经典的是Fisher-Yates算法(也称Knuth洗牌)。它的做法是从后往前,对每个位置 ,随机选一个  内的下标 ,交换  与 。

  c
void shuffle(vector<int>& a) {
    for (int i = a.size() - 1; i > 0; i--) {
        int j = rand() % (i + 1);
        swap(a[i], a[j]);
    }
}


随机抽样:蓄水池抽样

蓄水池抽样(Reservoir Sampling)用于从一个未知长度(或非常大)的数据流中,等概率地随机抽取  个样本。它的巧妙之处在于,不需要事先知道数据总量,只需一次遍历即可完成。


部分文件列表

文件名 大小
随机算法的实用技巧:洗牌、随机抽样与哈希冲突处理.docx 40K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载