Dav*_*les 1 java random algorithm
我需要从列表中选择一个满足某些条件的随机元素.我一直在使用的方法有效,但我确信并非一切都有效.最有效的方法是什么?
以下代码位于while(true)循环内,因此在每次迭代时显然不是非常有效地对列表进行洗牌.
Foo randomPick = null;
Collections.shuffle(myList);
for (Foo f : myList) {
if (f.property) {
randomPick = f;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
最有效的解决方案部分取决于您选择随机元素的频率,是否要选择不同的随机元素,以及哪些元素符合标准的比例
一些选择:
ArrayList:((注意,我一直主要假设ArrayList复杂性.LinkedList例如,获取a中的特定索引是O(n),但是删除很便宜.)