标题:求助 一个洗牌程序为什么有重?
只看楼主
xxp5310776
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:49
专家分:1
注 册:2006-11-19
结帖率:100%
 问题点数:0 回复次数:14 
求助 一个洗牌程序为什么有重?

package proj;
import java.util.Random;
public class xipai {
public xipai() {
}

public static void main(String[] args) {
xipai xipai = new xipai();
int[] card=new int[52];
System.out.println("变量赋初始值:");
for(int i=0;i<52;i++){
card[i]=i+1;
System.out.print(" "+card[i]);
if((i+1)%10==0)
System.out.println();
}
System.out.println();
System.out.println("洗动之后变为:");
Random ran=new Random();
for (int i=0;i<52;i++){
int temp=0;
int j=ran.nextInt(52);

temp=card[i];
card[i]=card[j];
card[j]=temp;
System.out.print(" "+card[i]);
if((i+1)%10==0)
System.out.println();

}
}
}

搜索更多相关主题的帖子: 洗牌 
2006-11-30 21:24
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

你这样取随机数是没有用的
最好还是用一个向量来保存所有的牌,然后取一张删一张,就不会有重复的了


可惜不是你,陪我到最后
2006-11-30 21:29
xxp5310776
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:49
专家分:1
注 册:2006-11-19
得分:0 
我现在就使用随机数来模拟洗牌的最简单的算法!我想直接通过数组下标来改变!

[此贴子已经被作者于2006-11-30 21:55:46编辑过]


2006-11-30 21:46
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

那你怎么保证你以前取过的下标没有重复的呢?


可惜不是你,陪我到最后
2006-11-30 23:23
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
所以最好还是借助JAVA的强大的数据结构来实现
多方便

可惜不是你,陪我到最后
2006-11-30 23:23
Algorithms
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-12-1
得分:0 

对啊,能不能跟我解释一下向量是什么意思啊

2006-12-01 02:01
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
向量就是java.util.Vector

可惜不是你,陪我到最后
2006-12-01 09:05
xxp5310776
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:49
专家分:1
注 册:2006-11-19
得分:0 
那请版主帮我把程序修改一下如何?

2006-12-01 09:26
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

[CODE]/*
* SendCard.java
*
* Created on 2006年12月1日, 上午9:34
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author lbf
*/
import java.util.*;
public class SendCard {
private Vector<Card> v;
/** Creates a new instance of SendCard */
public SendCard() {
initOther();
}
private void initOther(){
v=new Vector<Card>();
for(int i=1;i<=13;i++){
v.add(new Card('A',i));
v.add(new Card('B',i));
v.add(new Card('C',i));
v.add(new Card('D',i));
}
}
public void display(){
int total=0;
while(v.size()!=0){
total++;
System.out.print(v.remove((int)(Math.random()*v.size()))+"\t");
if(total%13==0)
System.out.println();
}
}
public static void main(String[] args) {
SendCard sc=new SendCard();
sc.display();
}

}
class Card{
private int num;
private char name;
public Card(char name,int num){
this.num=num;
this.name=name;
}
public String toString(){
return ""+name+":"+num;
}
}[/CODE]

你看看吧


可惜不是你,陪我到最后
2006-12-01 09:42
xxp5310776
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:49
专家分:1
注 册:2006-11-19
得分:0 
谢谢了!

2006-12-01 10:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-106417-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.145579 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved