gpt4 book ai didi

java - 在不重复位置的情况下检索数组中的随机元素

转载 作者:行者123 更新时间:2023-11-30 09:06:57 24 4
gpt4 key购买 nike

我想从数组中检索元素,但如果已经选择了元素位置,则不会重复。执行此操作的最佳和/或最易读的方法是什么?

我想到的方法只适用于数字,当一个元素在另一个位置有重复时会受到限制。我找到的最接近的是:Java - generate Random range of specific numbers without duplication of those numbers - how to?但它不适用,因为我不需要数组中的所有元素。虽然它让我意识到一个可能的“解决方案”是随机播放然后遍历数组以获得我需要的数量,但我想知道还有什么方法可以做到这一点?

最佳答案

这是一个已知的算法。您需要的是 Knuth-Fisher–Yates 洗牌的变体 http://en.wikipedia.org/wiki/Knuth_shuffle .

将所有数字添加到一个集合中。如果所有数字都是连续的,则只需使用 for-loop

填充集合
Repeat this until there's only one number in the collection:
generate a random number using the length of the collection.
remove the number from the collection.

At this point there's only one element in the collection. So remove the only number from the collection.

关于java - 在不重复位置的情况下检索数组中的随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com