停止在Java中两次从数组中选择相同的字符串进行随机化

Use*_*920 0 java arrays string random

Random Randomizer = new Random () ;
  cardoneA = suits[Randomizer.nextInt(suits.length)];
  cardoneAv = ranks[Randomizer.nextInt(ranks.length)];
Run Code Online (Sandbox Code Playgroud)

如何阻止Randomizer两次挑选相同的卡片?例如.如果它选择了某种套装和等级,我怎么能阻止它再次采摘呢?另外,我怎么能让它一起挑选这两个,这样它就可以选择另一张具有相同价值的卡,只要它是一个不同的类?

Phi*_*ipp 5

只需像在现实生活中那样模拟一副牌:

  1. 将所有尚未绘制的卡存储在ArrayList中.
  2. 生成介于0和ArrayList当前大小之间的随机数
  3. 取出被挑选的卡片.现在阵列的尺寸减小了一个.

该算法也称为Fisher-Yates Shuffle.

  • `Collections.shuffle()`是一个很好的实现. (2认同)