为什么不做成洗牌而做成摆牌dim i as integer
dim j as integer
dim intN as integer
dim intCard(51) as integer
dim intS(3,12) as integer
randomize
for i=0 to 51
    Card(i)=i
next
intN=51
‘摆牌
for i=0 to 3
    for j=0 to 12
        intS(i,j)=Card(Cint(intN*rnd))'有点问题?? 
        intN=intN-1
    next j
next i’然后利用取整取余判断牌的数值与花色
大致这样,你在想想

解决方案 »

  1.   

    dbcontrols(泰山):你怎么只是关注啊??你这样的高手不应该啊!!
    windygirl(风间沧月) :
    说具体些,请明示,好吗?
      

  2.   

       依然是Bruce Mckinney的代码,在HardCore VB里有:Sub ShuffleArray(av() As Variant, Optional helper As ISortHelper)
        Dim iFirst As Long, iLast As Long
        If helper Is Nothing Then Set helper = New CSortHelper
        
        iFirst = LBound(av): iLast = UBound(av)
        ' Randomize array
        Dim i As Long, v As Variant, iRnd As Long
        For i = iLast To iFirst + 1 Step -1
            ' Swap random element with last element
            iRnd = MRandom.Random(iFirst, i)
            helper.Swap av(i), av(iRnd)
        Next
    End Sub上面的ISortHelper自己定义一个吧,有个空的Swap方法就行,自己根据意思写一个不难。
    跟楼上那位说的算法是一样的。
      

  3.   

       Set d = CreateObject("Scripting.Dictionary")
       
       d.Add "a1", "红桃A"
       d.Add "a2", "红桃2"
       '.......
       dd.Add "d13", "黑桃k"
       'dd.Add "xx", "大怪"
       'dd.Add "yy", "小怪"
       Randomize (Now)
       Dim temp As Long
       Dim group(4, 13) As String '牌发到这里
       Dim m As Long
       Dim n As Long
       Dim i As Long
       For m = 4 To 1 Step -1
          For n = 13 To 1 Step -1
             i = (m - 1) * 13 + n
             temp = Int(Rnd * i) + 1
             group(m, n) = d.Item(temp).Text
             d.Remove temp
          Next
       Next
       Set d = Nothing
       '可扩展到有大小怪的情况