设计一个洗牌的程序?就是将这副牌进行随机交换

#include <iostream>
#include <cstdlib>
#include<ctime>
using namespace std;
 
void Swap(int &a, int &b){// 有可能swap同一变量,不能用异或版本
    int t = a;
    a = b;
    b = t;
}
void RandomShuffle(int a[], int n){  //洗牌程序
    for(int i=0; i<n; ++i){
        int j = rand() % (n-i) + i;// 产生i到n-1间的随机数
        Swap(a[i], a[j]);
    }
}
int main(){
    srand((unsigned)time(0));  //用时间来作为种子
    int n = 9;
    int a[] = {
        1, 2, 3, 4, 5, 6, 7, 8, 9
    };
    RandomShuffle(a, n);
    for(int i=0; i<n; ++i)
        cout<<a[i]<<endl;
    return 0;
}

 

转载于:https://www.cnblogs.com/jijiji/p/4861687.html

* Game 类 * 功能:整个游戏:开始游戏 -> 初始牌 -> 洗牌 -> 发牌 -> 排序 -> 比较大小 -> 游戏结果 * 游戏说明: * 1.创建一副扑克牌,不考虑大小王 * 2.创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合 * 3.洗牌,将之前创建的扑克牌顺序打乱 * 4.发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张 * 5.开始游戏,比大小,大小相同比花色 * * PockerCard 类 * 功能:扑克牌的核心类 包括创建角色、创建牌、显示牌、洗牌、比较牌、排序牌等 * 属性:List cards 整幅扑克牌的集合 、 People[] peoples 角色 * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void refreshCard() //洗牌 从第一支牌开始从所有牌中随机取一只与之交换 * public void addPeopleInfo() //添加玩家的基本信息 * public void dealCard() //发牌 从开始分别给A B发牌 每人两支 * public void showPeopleCard() //显示两个角色自己获得的牌 * public void sortCard() //将每个角色自己的牌按从小到大排序 * public void comparePeopleCard() //比较角色的牌 * * SingleCard类 实现Comparable接口 * 功能:产生单支牌 * 属性:ID、color、keyID数组、keyColor数组 * 方法:public SingleCard(){} //无参构造函数 * public SingleCard(String ID,String color) //有参构造函数 * @Override public int compareTo(SingleCard o) //比较当前牌与SingleCard o的牌的大小 * * People类 * 功能:产生一个角色 * 属性:ID、Name、和、存储牌的List集合。 * 方法: public People() //初始化存储牌的List集合; *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值