Java 如何从数组中获取随机对象
我正在观看这个程序,它一次从一个袋子里取出两个随机物体。包内有两种不同颜色的物品,根据物品的颜色不同,会发生不同的事情。我现在获取随机值的方式是:Java 如何从数组中获取随机对象,java,Java,我正在观看这个程序,它一次从一个袋子里取出两个随机物体。包内有两种不同颜色的物品,根据物品的颜色不同,会发生不同的事情。我现在获取随机值的方式是: while (bag.size() > 1) { count++; int select1 = rnd.nextInt(bag.size()); Balls indexPos1 = bag.get(select1); int select2 = rn
while (bag.size() > 1) {
count++;
int select1 = rnd.nextInt(bag.size());
Balls indexPos1 = bag.get(select1);
int select2 = rnd.nextInt(bag.size());
Balls indexPos2 = bag.get(select2);
System.out.println(select1);
System.out.println(select2);
但在程序结束时,如果它碰巧对同一物体进行了索引,那么袋子内的颜色变化是错误的,打印的结果是错误的。我将粘贴到循环的其余部分
int count = 0;
Random rnd = new Random();
// Depending on what colour the balls are either black ball is placed or white.
while (bag.size() > 1) {
count++;
int select1 = rnd.nextInt(bag.size());
Balls indexPos1 = bag.get(select1);
int select2 = rnd.nextInt(bag.size());
Balls indexPos2 = bag.get(select2);
System.out.println(select1);
System.out.println(select2);
if (bag.size() != 1) {
System.out.println(bag);
System.out.println("Printing size: " + bag.size());
if (bag.get(select1).equals(blackBalls) && indexPos2.equals(blackBalls)) {
System.out.println("Both balls are black.");
System.out.println("Removing black ball");
bag.add(blackBalls);
bag.remove(blackBalls);
bag.remove(blackBalls);
continue;
}if (indexPos1.equals(whiteBalls) && indexPos2.equals(whiteBalls)) {
System.out.println("both Balls are white");
bag.add(blackBalls);
bag.remove(whiteBalls);
bag.remove(whiteBalls);
System.out.println("Removing 2 white balls. adding black.");
continue;
}if (indexPos1.equals(whiteBalls) && indexPos2.equals(blackBalls) || indexPos1.equals(blackBalls) && indexPos2.equals(whiteBalls)) {
bag.add(whiteBalls);
bag.remove(select1);
bag.remove(select2);
System.out.println("Both balls are different.");
System.out.println("Removing white ball");
}
}
}
我不知道如何从一个数组中获取两个随机对象,所以它不会两次选择同一个对象。非常感谢您的帮助或反馈。您有一些选择
集合。除非有成千上万的元素在其中,否则洗牌将不会成为性能问题
.nextInt(bag.size())
,而是使用.nextInt(bag.size()-1)
,如果获得的索引等于或大于第一个索引,则增加1。这实际上转化为从集合[0,1,2,3,5,6,7]中选取一个均匀分布的随机数,假设一个包包含8个元素,选择的第一个索引是4