面试有关问题 请解答 感激。

面试问题 请解答 感激。。。。。。
一副扑克牌54张,用DELPHI写一方法,当点"洗牌"按钮时,将原有的54张牌重新打乱(假设最初按1,2,3,4....54的顺序放入一数组中) 


------解决方案--------------------
用randomize 和 random()函数啊。不难吧。
用一个二维数组纪录54张牌,一维纪录牌值1~54,二维为标志位。如P[1][0]、P[2][0]....P[54][0]
写个循环,随机产生一个整数,每当随机抽出一张牌后,将二维标志置1,如P[33][1]。标志位的目的是为了防止重复抽中。
直到所有牌抽完为止。
算法可以优化,为了防止随机总是抽到已选中的牌,可以在抽到已选中牌后将整数依次加1,直到找到有标志位的。
呵呵,这个以前我在做powerbuilder的时候做过,只不过用的不是牌而已。