如题 本人小菜 求助各位大侠 刚申请  分不多很不好意思

解决方案 »

  1.   

    csdn搜的
    C# 斗地主发牌算法lz你头像很酷
      

  2.   

    汗,知道了,是怕随机到同一张牌吧。
    可以这样,
    1.把所有牌放到一个数组(单单一个数字id也行)。
    2.取两个随机数,最大值为数组大大小。
    3.交换这两个随机数对应index的数组中的值。
    4.重复n次 2和3
    5.这样就把初始的数组打乱了,然后按顺序取出即可
      

  3.   

     var list= Enumerable.Range(1, 54).OrderBy(Guid.NewGuid()); //随机混乱54张牌 //上面这步最关键至于下面的我就不打算写了,无非是按顺序给3家发牌 直到最后3张
      

  4.   


    #include <stdlib.h> //标准工具库,要用到其中的rand() 
    #include <stdio.h> 
    #include <time.h> //时间库,要用到里面的时间来做随机数的种子
    #include <iostream.h>void changetocard(int);
    void coutone();
    void ntoc(int);
    char ntof(int i);int ir;void main(void) 

    int i;
    cout<<"玩家一\t"<<"玩家二\t"<<"玩家三\t"<<"玩家四\t"<<endl;
    srand(time(0));
    ir=rand();
    for(i=0;i<=3;i++)
    {
    ir++;
    coutone();
    }
    }void coutone()
    {
    int i,j,k,temp;                        //i,j为循环控制变量,temp为保存随机序号的中间变量   
    int normal[54]={0,1,2,3,4,5,6,7,8,9,
    10,11,12,13,14,15,16,17,18,19,
    20,21,22,23,24,25,26,27,28,29,
    30,31,32,33,34,35,36,37,38,39,
    40,41,42,43,44,45,46,47,48,49,
    50,51,52,53};//正常顺序的0-53
    int random[54];                      //存放生成的随机顺序的0-53
    srand(ir);                   
    /*第一个for用来生成随机顺序的0-53并存放到random数组中*/
    for(i=0;i<=54;i++) 
    {
    temp=rand()%(55-i);               //通过求余得到有效序号,因为每次循环后normal数组中将有一个元素被覆盖
    random[i]=normal[temp];           //把这个序号在normal数组中对应的元素放到random数组中(依次)
    for(j=temp;j<=54;j++)              //对normal数组中序号temp及以后的元素,进行依次向前覆盖的操作
    normal[j]=normal[j+1];        
    } for(i=0;i<=54;)
    { for(k=0;k<=3;k++,i++)
    {
    changetocard(random[i]+1);
    cout<<"\t";
    }
    cout<<endl;
    }
    }void changetocard(int i)
    {
    if(i<=52)
    {
    cout<<ntof(i/13);
    ntoc(i%13+1);
    }
    else if(i==53)
    cout<<"JOKER";
    else if(i==54)
    cout<<"joker";
    }
    char ntof(int i)//转四花色
    {
    switch(i)
    {
    case 0:return 3;break;
    case 1:return 4;break;
    case 2:return 5;break;
    case 3:return 6;break;
    case 4:return 6;break;
    default:break;
    }
    }
    void ntoc(int i)//转AJQK
    {
    switch(i)
    {
    case 1:cout<<"A";break;
    case 11:cout<<"J";break;
    case 12:cout<<"Q";break;
    case 13:cout<<"K";break;
    default:cout<<i;break;
    }
    }以前用c++写的发的四副牌给四个人,改一下就可以了
      

  5.   

    11 楼的大哥 感谢你上网找了C++  我现在也一直参考着 java和C++的来写  但是 老有错误  纠结