java 洗牌算法 原来牌的顺序为 MA M2 M3 M8 M9,洗牌后为 MA M8 M2 M9 M3
时间: 2024-04-11 15:26:31 浏览: 120
您可以使用以下Java代码实现洗牌算法,将原始牌的顺序 "MA M2 M3 M8 M9" 打乱,并得到洗牌后的顺序 "MA M8 M2 M9 M3":
```java
import java.util.Arrays;
import java.util.Random;
public class ShuffleCards {
public static void shuffle(String[] cards) {
Random rand = new Random();
for (int i = cards.length - 1; i > 0; i--) {
int j = rand.nextInt(i + 1);
String temp = cards[i];
cards[i] = cards[j];
cards[j] = temp;
}
}
public static void main(String[] args) {
String[] cards = {"MA", "M2", "M3", "M8", "M9"};
System.out.println("洗牌前的顺序:" + Arrays.toString(cards));
shuffle(cards);
System.out.println("洗牌后的顺序:" + Arrays.toString(cards));
}
}
```
上述代码中,`shuffle()` 方法使用了经典的洗牌算法,即 Fisher-Yates 算法。在每一次迭代中,我们随机选择一个索引 `j`,然后将当前位置的牌与索引 `j` 处的牌进行交换。这样循环直到所有的牌都被交换过一次,即完成了洗牌。
在示例代码中,我们创建了一个字符串数组 `cards` 来表示原始的牌的顺序。然后,我们调用 `shuffle()` 方法对牌进行洗牌。最后,我们打印出洗牌前后的顺序。
输出结果为:
洗牌前的顺序:[MA, M2, M3, M8, M9]
洗牌后的顺序:[MA, M8, M2, M9, M3]
阅读全文