当前位置:  开发笔记 > 编程语言 > 正文

我们可以安全地对Java Collections shuffle(List <?>,Random)方法做出哪些假设?

如何解决《我们可以安全地对JavaCollectionsshuffle(List<?>,Random)方法做出哪些假设?》经验,为你挑选了1个好方法。

因此,我正在研究集合shuffle方法,并尝试提出一个列表,列出了运行它时是什么和不确定的.我提出了一些明显的案例如下:

    给出的列表将像之前一样在洗牌后包含相同的元素

    运行该方法后,该列表可能相同也可能不同(您最终可能会使用相同的元素顺序)

    该方法将以线性时间运行(我认为这是正确的但不是100%正面).

此列表是否总结或我是否遗漏了一些可能的案例?



1> templatetype..:

关于会发生什么的官方文档Collections.shuffle有很多话要说.该列表将使用似乎是Fisher-Yates shuffle算法进行混洗,该算法(假设O(1)中的随机访问可用)在时间O(n)和空间O(1)中运行.如果没有随机访问,则实现将使用空间O(n).假设基础随机源是完全无偏的,那么任何特定排序发生的概率都是相等的(也就是说,你得到了可能排列的均匀随机分布).

那么,回答你的问题:

    该列表将包含相同的元素.

    它们可能处于不同的顺序,但是有1/n!机会比他们在同一个顺序.

    运行时为O(n),空间使用量为O(1)或O(n),具体取决于列表是否具有随机访问支持.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有