编写一个扑克牌的洗牌的算法:假设有54张牌,分别用1-54的数字来表示,并保存在一个数组中,设计一个算法使数组中的数字随机存放,并且无重复和缺失的现象。打印洗牌前后的结果。要求用2种方法实现,并找出较为优化的一种;
就这个题 我才开始学JAVA 明天老师要检查~~ 那个哥哥能帮帮我
我学到2维数组了~~
我谢谢大家了~~
真的很头疼~~~~~
就这个题 我才开始学JAVA 明天老师要检查~~ 那个哥哥能帮帮我
我学到2维数组了~~
我谢谢大家了~~
真的很头疼~~~~~
import java.util.Random;
public class Code {
/** Creates a new instance of Code */
public Code() {
this.r=new Random();
this.codes=new int[54];
} public void xiPai(){
for (int i=0;i<54;i++){
int n=r.nextInt(54)+1;
this.codes[i]=n;
for (int j=0;j<i;j++){
if (this.codes[j]==n){
i--;
break;
}
}
}
}
public void printCode(){
for (int i=0;i<54;i++){
if (i%10==0)
System.out.println();
System.out.print(this.codes[i]+" ");
}
}
public static void main(String[] args){
Code c=new Code();
c.xiPai();
c.printCode();
}
private int[] codes=null;
Random r=null;
}
public static void main(String[] args) {
int puKePai;//定义产生的一张扑克牌
int n = 0;//
int[] puKe = new int[54];//定义存放扑克牌的数组
temp: while (n < 54) {//产生随机数,既随机产生扑克点数 puKePai = (int) ((Math.random() * 100)) % 54 + 1;//产生1到54的随机数;
for (int k = 0; k < n; k++) {
if (puKePai == puKe[k])//产生的随机数与数组里的数比较,如果已经存在,则跳出循环重新产生
continue temp;
}
puKe[n] = puKePai;//产生的随机数不存在数组里,放入数组中;
n++;// }
for (int m = 1; m < 55; m++) {//打印产生的扑克牌;
System.out.print(m + ": " + puKe[m - 1] + " ");
if (m % 10 == 0) {
System.out.println(" ");
}
} }
}上面的代码不知道是不是你要的意思!!
public static void main (String[] args) {
final int n = 54;
int[] iarr = new int[n];
java.util.Random r = new java.util.Random ();
int j = 0;
while(j < n) {
int x = r.nextInt (n);
if (iarr[x] == 0) {
j++;
iarr[x] = j;
}
}
for (int a : iarr) {
System.out.print (a + " ");
}
}
}
public static void main(String[] args) {
int[] puKe = new int[54];// 定义存放扑克牌的数组
Random r = new Random();
int i=0;
while(i<54){
int temp=0;
int current = Math.abs(r.nextInt()) % 54 + 1;
for (int j = 0; j < i; j++) {
if (puKe[j] == current){
temp=1;
break;
}
}
if(temp==0){
puKe[i] = current;
++i;
}
}
for (int m = 1; m < 55; m++) {// 打印产生的扑克牌;
System.out.print(m + ": " + puKe[m - 1] + " ");
if (m % 10 == 0) {
System.out.println(" ");
}
} }
}