美文网首页读书
Fisher-Yates Shuffle高效随机算法

Fisher-Yates Shuffle高效随机算法

作者: DJ_f3ee | 来源:发表于2019-03-31 23:26 被阅读0次

    前些天在做算法题时,遇到了一个觉得有意思的东西:

    注意红色的箭头

    要求是返回的排列顺序的概率应该相同,当时想的是把每一种排列都弄出来,然后emm,就3X2种而已,后来看看别人的写的,haha,自己还是幼稚了些。

    任何编程语言中最流行的混乱技术称为Fisher-Yates Shuffle,这就是我们在这里使用的。Fisher-Yates Shuffle首先在数组中的任何位置选择一个随机元素,然后使用数组中的最后一个元素进行交换。在下一步中,它从数组中最后一个元素之外的任何位置选择一个随机元素,并将其与倒数第二个元素交换。它一直持续到交换每个元素为止。

    emm,1.0

    更清晰的图片可以看可汗学院的那个链接,自己录屏技术有限,请谅解一下下哈。

    升级版的,暂时没写源码。

    2.0

    这是其中的一个实现:

    实现的效果

    源码:https://github.com/Jiangjao/python_learn_demo/blob/master/Fisher-Yates%20shuffle

    reference:Wiki:https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

                    可汗学院: https://www.khanacademy.org/computing/computer-programming/programming-games-visualizations/memory-game/a/grid-of-tiles

    部分图片来源:谷歌

    相关文章

      网友评论

        本文标题:Fisher-Yates Shuffle高效随机算法

        本文链接:https://www.haomeiwen.com/subject/hdqpbqtx.html