洗牌的一个C++类!

原创 2003年09月10日 11:30:00

这是一个洗牌的类!
提供了几个简单的借口!
bool __fastcall Refresh();洗牌
int __fastcall Getbyindex(int _index);根据顺序参数来取牌;
GRefresh_Card(int _CardNum=54);初始化,_CardNum是牌的张数,默认的事54;
void free();用来释放一些必要的东西;
AnsiString Getusefully(int _index);真实取牌,带色!Code如下:

//---------------------------------------------------------------------------


#pragma hdrstop

#include "RefC.h"
#include <vector>
#include <algorithm>
#include <stdlib.h>
#include <Classes.hpp>
//---------------------------------------------------------------------------

#pragma package(smart_init)
GRefresh_Card::~GRefresh_Card()
{
        //Îö¹¹
        free();

}

bool __fastcall GRefresh_Card::Refresh()
{
        //Ï´ÅÆ
        bool Card_Result=false;
        srand((unsigned)time(NULL));            //+ Ôö¼ÓÕâÒ»ÐУ¬ÒÔʱ¼ä×÷ΪËæ»úÊýÖÖ×Ó
        std::random_shuffle(Card->begin(),Card->end());
        return Card_Result;
}

int __fastcall GRefresh_Card::Getbyindex(int _index)
{
        //ÄÇÅÆ£»
        return (_index>=0 && _index<Card_Num)? Card->operator [](_index):0;

}

GRefresh_Card::GRefresh_Card(int _CardNum)
{
        //³õʼ»¯£»
        Card_Num=_CardNum;
        Card=new std::vector<int>;
        for(int i=0;i<54;i++)
        Card->push_back(i);
        Card_color=new TStringList();
        Card_color->Add("·½¿é");
        Card_color->Add("÷»¨");
        Card_color->Add("ºìÌÒ");
        Card_color->Add("ºÚÌÒ");
}

void GRefresh_Card::free()
{
        delete  Card;
        Card=NULL;
        delete Card_color;
        Card_color=NULL;
}

AnsiString GRefresh_Card::Getusefully(int _index)
{
        int _color=Getbyindex(_index)%13;
        int _value=Getbyindex(_index)/13;
        if(_value>3)
        {
                AnsiString result;
                _color? result="´óÍõ":result="СÍõ";
                return result;
        }
        else
        {
                AnsiString result=Card_color->operator [](_value)+IntToStr(_color+1);
                return result;
        }
}

//---------------------------------------------------------------------------

#ifndef RefCH
#define RefCH
#include <vector>
#include <Classes.hpp>
//---------------------------------------------------------------------------
class GRefresh_Card {
protected:
        int Card_Num;
        std::vector<int> * Card;
        TStringList * Card_color;
public:
        ~GRefresh_Card();
        bool __fastcall Refresh();
        int __fastcall Getbyindex(int _index);
        GRefresh_Card(int _CardNum=54);
        void free();
        AnsiString Getusefully(int _index);};
#endif

网易有道编程题:洗牌算法(C++)

题目:洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆)...
  • lxubin
  • lxubin
  • 2016年08月26日 21:11
  • 1818

c/c++实现模拟洗牌发牌

//原题目出自http://blog.csdn.net/niu_gao/article/details/51458721#cpp,读了原博主的文章后自己学习后用一级指针实现功能#define _CRT...
  • lq18811566072
  • lq18811566072
  • 2017年04月28日 08:19
  • 532

给定N张扑克牌和一个随机函数,设计一个洗牌算法

这道题使用随机函数保证随机概率相等性,每选出一张牌,让它和当前位置的牌交换位置,保证后面的牌的概率性相等: 具体来说就是:随机数组下标,不是牌, 假定N=54,首先,我们有一个随机函数发生...
  • ONE_PIECE_HMH
  • ONE_PIECE_HMH
  • 2016年08月10日 17:32
  • 850

设计一个随机洗牌的算法

问题:给定一个有序序列1~n,要你将其完全打乱,要求每个元素在任何一个位置出现的概率均为1/n。 解决方案:依次遍历数组,对第n个元素,以1/n的概率与前n个元素中的某个元素互换位置,最后生成的序列...
  • tingting14054765
  • tingting14054765
  • 2015年05月31日 16:22
  • 875

完美洗牌算法

原文:http://blog.csdn.net/jirongzi_cs2011/article/details/11761635 完美洗牌问题: 给定一个数组a1,a2,a3,...an...
  • w00w12l
  • w00w12l
  • 2015年12月04日 14:23
  • 1122

c#实现洗牌程序

洗牌程序,意思就是,打乱现有序列的次序,并每次执行不会出现次序相同的序列的程序。 那么首先想到了使用随机数Random,快速实现如下: public int[] Shuffle(int...
  • Wolftotem18
  • Wolftotem18
  • 2016年09月12日 16:06
  • 419

《C语言及程序设计》程序阅读——洗牌

返回:贺老师课程教学链接//随机数发牌游戏的C语言实现: #include #include #include #include using namespace std; void initial(i...
  • sxhelijian
  • sxhelijian
  • 2015年05月02日 10:59
  • 1942

【每日算法】洗牌算法

洗牌算法 给定一个n个数的序列,设计一个算法将其随机打乱,保证每个数出现在任意一个位置的概率相同(也就是说在n!个的排列中,每一个排列出现的概率相同)。...
  • jiange_zh
  • jiange_zh
  • 2016年02月18日 10:27
  • 1421

游戏中常见的洗牌算法

今天把游戏中用到的洗牌算法好好看了看,把自己感觉最易懂的和最经典的一种分享出来,当然,我这个是看过别人之后自己写的。 我们以扑克牌当做例子,一共有54张,如何一次就把排序全部打乱呢? 1、最笨的洗牌算...
  • jiasenhao_vip
  • jiasenhao_vip
  • 2016年01月25日 16:53
  • 1390

集合框架_模拟斗地主洗牌和发牌

package cn.itcast_03; import java.util.ArrayList; import java.util.Collections; /* * 模拟斗地主洗牌发牌 *...
  • L1585931143
  • L1585931143
  • 2017年01月14日 20:46
  • 439
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:洗牌的一个C++类!
举报原因:
原因补充:

(最多只允许输入30个字)