问题
实现一个最简单的洗牌算法。
分析
很多人第一次都可能会很迷惑,其实只要理解好了这个题目,实现起来相信并不难。
我们需要明确几点:
1,洗牌并不是说要保证他们不连号。
2,可以简单认为有54张牌即可,不需要去区分花色数字等。
3,随机打乱他们的顺序即可。
4,尽量不使用系统方法和多余的空间。
代码
import java.util.Arrays;
import java.util.Random;
public class ShuffleCards {
public static void main(String[] args) {
int[] cards = new int[54];
for (int i = 0; i < cards.length; i++) {
cards[i] = i;
}
System.out.println(Arrays.toString(cards));
Random random = new Random();
for (int i = cards.length - 1; i >= 1; i--) {
int nextInt = random.nextInt(i);
int temp = cards[i];
cards[i] = cards[nextInt];
cards[nextInt] = temp;
}
System.out.println(Arrays.toString(cards));
}
}
网友评论