【发布时间】:2016-12-17 20:15:33
【问题描述】:
给定一个集合 X,使用 java 我如何从中选择两个随机项目,以便我可以增加一个项目并同时减少另一个项目。 提前谢谢你。
【问题讨论】:
-
以下链接是否有帮助:stackoverflow.com/questions/124671/…
标签: java
给定一个集合 X,使用 java 我如何从中选择两个随机项目,以便我可以增加一个项目并同时减少另一个项目。 提前谢谢你。
【问题讨论】:
标签: java
我会检查集合的大小,然后随机选择它下面的两个“索引”。并不是说java中的Set元素没有真正的索引,当然(至少在Lists有它们的意义上,get(int)方法,但是这种行为可以通过迭代@来模拟987654324@并计算步数):
Set<Object> set = ...;
Random random = new Random(); // or some better RNG
int size = set.size();
int step1 = rand.nextInt(size - 1);
int step2 = rand.mextInt(size - step1);
Iterator<Object> iter = set.iterator();
for (int i = 0; i < step1 - 1; ++i) {
iter.next();
}
Object rand1 = iter.next();
for (int i = 0; i < step2 - 1; ++i) {
iter.next(); // Note, this is the SAME iterator!
}
Object rand2 = iter.next();
【讨论】: