随机卡生成

viv*_*oid 4 java

我需要从数组中随机生成三张牌我有52张牌的阵列,从card1到card52

String rank[]=new String[52];
for(int i=0;i<rank.length;i++)
{
rank[i]= "card"+i;
}
Run Code Online (Sandbox Code Playgroud)

现在我需要从阵列中选择三张牌,它不应该是可重复的.

有谁能够帮我.实际上我正在做这个bt卡正在重复.请给我解决方案.

提前致谢.

Vit*_*nko 15

您可以尝试Collections.shuffle(列表列表)方法:

String rank[] = new String[52];
for (int i = 0; i < rank.length; i++) {
  rank[i] = "card" + i;
}
List<String> cards = Arrays.asList(rank);
Collections.shuffle(cards);
List<String> selectedCards = cards.subList(0, 3);
Run Code Online (Sandbox Code Playgroud)

  • `Collections.shuffle()`使用在线性时间内运行的Fisher-Yates算法(或类似的东西),因此交换3个随机卡和52个随机卡之间的差异相对可以忽略不计(49个额外的索引到数组中) (3认同)

Dav*_*ebb 8

如果将数组转换为a List,则可以使用Collections.shuffle()它来随机化.然后,如果您只是获取列表的前三个条目,您将获得三张没有重复的随机卡.

List<String> ranklist = Arrays.asList(rank);
Collections.shuffle(ranklist);
String rank1 = ranklist.get(0);
String rank2 = ranklist.get(1);
String rank3 = ranklist.get(2);
Run Code Online (Sandbox Code Playgroud)