洗牌算法之Knuth Shuffle

本文介绍了Knuth Shuffle洗牌算法,源自Fisher-Yates Shuffle,用于生成等概率随机序列。虽然时间复杂度为O(n),但算法并非完全等概率。文章探讨了算法原理、实现及存在的问题,并提出了一种简单的改进方案。
摘要由CSDN通过智能技术生成

洗牌这种技术活,我相信大家都有玩过,虽然手法各不相同,但是目的大部分应该是一样的,就是把牌的顺序打乱,创造一个公平的玩牌氛围。


洗牌算法(Shuffling Algorithm),顾名思义,它的产生是用来解决类似洗牌这种场景的问题的,目的是产生一串等概率的随机列,使得很难去预测牌的顺序。现在的各种牌类游戏都有自己的洗牌算法,为了保证游戏的趣味性,各自的实现中都有自己考虑的因素添加在其中。今天与大家分享的是名为Knuth Shuffle的洗牌算法,在TAOCP中可以找到,但是呢,这个算法其实不是高爷爷的原创,它的自然语言版本是在1938年由R.A. Fisher and F. Yates发表的,而程序语言的版本是1964年由R. Durstenfeld提出的。


算法描述:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值