印象中好像看过很多次洗牌算法,但是某一天突然被问,但是忘记了,这里记录下
其实思路很简单,比如有一个长度为m的数组,然后一个rand函数,
第一次,我们获取一个1-m 的随机值也就就是randint(1, m),此时概率为 1/m,
接着,我们从剩下的m-1个书中,随机取index为 randint(1, m-1)的数b,那么b被选中的概率为 (m-1/m)*(1/(m-1)) ,也就是1/m,所以思路这就么就简单!!!!
印象中好像看过很多次洗牌算法,但是某一天突然被问,但是忘记了,这里记录下
其实思路很简单,比如有一个长度为m的数组,然后一个rand函数,
第一次,我们获取一个1-m 的随机值也就就是randint(1, m),此时概率为 1/m,
接着,我们从剩下的m-1个书中,随机取index为 randint(1, m-1)的数b,那么b被选中的概率为 (m-1/m)*(1/(m-1)) ,也就是1/m,所以思路这就么就简单!!!!