程序设计_洗牌程序

问题:洗牌程序。52张牌(不算大小王),一个人随机地洗牌,每次结果都不同。

分析:随机数的使用。计算机不可能产生完全随机的数字。所谓随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似地模拟完全随机数,这种随机数被称为伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但从实用的角度而言,已经足够了。伪随机数的选择是从随机种子开始,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择很重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用系统时间有关的参数作为随机种子,这也是.NET Framework中的随机数发生器默认采用的方法。

C#方案:

using System;
class Program
{
    static void Main(string[] args)
    {
        string[] porks = new string[] { "A-S", "A-C", "A-H", "A-D",   
            "2-S", "2-C", "2-H", "2-D",
            "3-S", "3-C", "3-H", "3-D", 
            "4-S", "4-C", "4-H", "4-D",  
            "5-S", "5-C", "5-H", "5-D",
            "6-S", "6-C", "6-H", "6-D",
            "7-S", "7-C", "7-H", "7-D",
            "8-S", "8-C", "8-H", "8-D",
            "9-S", "9-C", "9-H", "9-D",
            "10-S", "10-C", "10-H", "10-D",
            "J-S", "J-C", "J-H", "J-D",
            "Q-S", "Q-C", "Q-H", "Q-D",                              
            "K-S", "K-C", "K-H", "K-D",};
        string tmp;
        int i, randtmp;
        Random r1 = new Random();
        for (i = 0; i < 52; i++)
        {
            // 随机生成数组下标            
            randtmp = (int)(52 * r1.NextDouble());
            tmp = porks[i];
            porks[i] = porks[randtmp];
            porks[randtmp] = tmp;
        }
        for (i = 0; i < 52; i++)
        {
            Console.WriteLine("  {0}", porks[i]);
        }
        Console.WriteLine("Note: S-spade C-club H-heart D-diamond");
        Console.ReadKey();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值