Java利用Math.random()方法实现洗牌功能(52张牌)

通过Java循环来实现洗牌功能。

程序:

public class Test1 {
	public static void main(String[] args) {
		final int N = 52;
		int[] nums = new int[N];
		String[] flower = {"黑桃","红心","方块","梅花"};//花色数组
		String[] number = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//牌面数组
		
		for(int i=0;i<N;i  ){ //给数组赋值
			nums[i] = i;
		}
		
		System.out.println("洗牌前:");
		
		for (int i = 0; i < nums.length; i  ) { //详情请看1.
			if((i 1)%13==0){
				System.out.printf("%s-%st",flower[ nums[i]/13 ],number[ nums[i]%13 ]);
				System.out.println();
			}else{
				System.out.printf("%s-%st",flower[ nums[i]/13 ],number[ nums[i]%13 ]);
			}
		}
		
		System.out.println("洗牌后:");
		
		for(int i=0;i<nums.length;i  ){ //详情请看2.
			int a = (int)(Math.random()*N);
			int temp = nums[i];
			nums[i] = nums[a];
			nums[a] = temp;
		}
		
		for (int i = 0; i < nums.length; i  ) {
			if((i 1)%13==0){
				System.out.printf("%s-%st",flower[ nums[i]/13 ],number[ nums[i]%13 ]);
				System.out.println();
			}else{
				System.out.printf("%s-%st",flower[ nums[i]/13 ],number[ nums[i]%13 ]);
			}
		}		
	}
}

//详情请看1.:

用for循环打印出52张扑克牌,这里一行要求输出13张牌,所以用了if( (i 1)% 13 ==0)就换行。

52张牌,4种花色,13张牌面。比如洗牌前是按照0~51的顺序来排列。

拿35做例子:nums[35]=35,flower[ nums[35]/13 ] = flower[2]===>方块

nums[35]=35,muber[ nums[35]%13 ] = number[9]===>10

所以nums[35]对应的就是”方块-10″。

//详情请看2.:

洗牌以为这样牌的排序是随机的,这里用到了Math类中random()方法,范围:[ 0.0,1.0)的double类型数字,通过转换变成int类型,然后乘52范围就变成[0,52)的整数。

生成随机数就和原数组进行交换,这是最基本交换语法,很实用。

 

物联沃分享整理
物联沃-IOTWORD物联网 » Java利用Math.random()方法实现洗牌功能(52张牌)

发表评论