第一种洗牌方式是均分26张牌,你一张我一张的洗。
第二种洗牌方式是随机生成一个数分成两份,你一张我一张的洗。
第三种洗牌方式是随机生成一个随机数,把牌分成两份,随机数洗牌
public class SecondWeek_Two {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]=new int[52];
for(int i=0;i<arr.length;i++) {
arr[i]=i+1;
}
// System.out.println();
/*第一种洗牌*/
Shuffling s1=new Shuffling(arr);
s1.getPart(26);
s1.ShuffLing_advanced();
s1.show();
int n=(int)(Math.random()*9+22);//生产22-30之间的随机数
System.out.println("随机数是:"+n);
/*第二种洗牌*/
Shuffling s2=new Shuffling(arr);
s2.getPart(n);
s2.ShuffLing_advanced();
s2.show();
System.out.println();
/*第三种洗牌*/
Shuffling s3=new Shuffling(arr);
s3.getPart(n);
s3.getCard_random();
s3.show();
}
}
class Shuffling{
private int[] arr;
private int[] FirstPart;
private int[] SecondPart;
private int First=0,Second=0,times,len=0;
public Shuffling(int[] arr) {
this.arr=arr;
}
void getPart(int n) {
FirstPart=new int[n];
SecondPart=new int[52-n];
if(n>=26) {
times=52-n;
}
else {
times=n;
}
for(int i=0;i<n;i++) {
FirstPart[i]=arr[i];
}
for(int i=0;i<(52-n);i++) {
SecondPart[i]=arr[arr.length-i-1];
}
}
void ShuffLing_advanced(){
int position=0;
while((First!=times) || ( Second!=times)) {
arr[position]=getFirstPart();
arr[position+1]=getSecondPart();
position=position+2;
}
while(position<arr.length) {
if(First==FirstPart.length) {
arr[position]=getSecondPart();
position++;
}
else {
arr[position]=getFirstPart();
position++;
}
}
}
int getFirstPart() {
int card;
card=FirstPart[First];
First++;
return card;
}
int getSecondPart() {
int card;
card=SecondPart[Second];
Second++;
return card;
}
// int shuffling_random() {
// int random_number=(int)(Math.random()%10+1);
// return random_number;
// }
void getFirstPartRandom() {
int num=(int)(Math.random()*10+1);
int count=0;
while(count<num) {
if(First==times) {
break;
}
arr[len]=getFirstPart();
len++;
count++;
}
}
void getSecondPartRandom() {
int num=(int)(Math.random()*10+1);
int count=0;
while(count<num) {
if(Second==times) {
break;
}
arr[len]=getSecondPart();
len++;
count++;
}
}
void getCard_random() {
while((First!=times) &&( Second!=times)) {
getFirstPartRandom();
getSecondPartRandom();
}
if(First==FirstPart.length) {
while(len<arr.length) {
arr[len]=getSecondPart();
len++;
}
}
else {
while(len<arr.length) {
arr[len]=getFirstPart();
len++;
}
}
}
void show() {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
}