已有57人关注
0502给的源码是否算bug
发表在C#图书答疑 2018-08-08 悬赏:8 学分 《零基础学C#》第5 章 数组—批量数据处理
是否精华
版块置顶:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace Demo

{

    class Program

    {

        static void Main(string[] args)

        {

            int[] cardsnumber = new int[52]; // 一副牌,用一副52张的牌,随机选择四张,牌用0到51表示

            for (int i = 0; i < cardsnumber.Length; i++)

            {

                cardsnumber[i] = i; // 建立一个数组,进行赋值

            }

            string[] colors = { "方片", "红桃", "黑桃", "梅花" }; // 牌的花色

            string[] cards = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };// 数字牌

            // 随机打乱牌

            for (int i = 0; i < cardsnumber.Length; i++)

            {

                int random = new Random().Next(0, cardsnumber.Length);

                int temp = cardsnumber[i];

                cardsnumber[i] = cardsnumber[random];

                cardsnumber[random] = temp;

            }

            for (int i = 0; i < 4; i++)

            {

                int num = cardsnumber[i] / 13; // 得到花色

                int number = cardsnumber[i] % 13; // 得到数字牌

                Console.WriteLine("第" + (i + 1) + "张牌:" + colors[num] + "   " + cards[number]); // 输出牌的花色和大小

            }

            Console.ReadLine();

        }

    }

}

第一次运行

第1张牌:红桃   King

第2张牌:方片   Ace

第3张牌:方片   2

第4张牌:方片   3

第二次运行

第1张牌:黑桃   2

第2张牌:方片   Ace

第3张牌:方片   2

第4张牌:方片   3

第三次运行

第1张牌:红桃   2

第2张牌:方片   Ace

第3张牌:方片   2

第4张牌:方片   3

random 定义为伪随机,出现上述现象是否为random的原因,如果是,真正的随机应该怎么弄?

谢谢老师!

分享到:
精彩评论 1
18921403167
学分:233 LV4
2018-08-09
沙发

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace Demo

{

    class Program

    {

        static void Main(string[] args)

        {

            int[] cardsnumber = new int[52]; // 一副牌,用一副52张的牌,随机选择四张,牌用0到51表示

            for (int i = 0; i < cardsnumber.Length; i++)

            {

                cardsnumber[i] = i; // 建立一个数组,进行赋值

            }

            string[] colors = { "方片", "红桃", "黑桃", "梅花" }; // 牌的花色

            string[] cards = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };// 数字牌

                                                                                                              // 随机打乱牌

           

            for (int i = 0; i < 4; i++)

            {

                Console.WriteLine("按回车键显示第{0}张牌",i+1);

                int random = new Random().Next(0, cardsnumber.Length);

                Console.ReadKey();

             

                    

                    int num = cardsnumber[random] / 13;

                    //得到花色,注意,cardsnumber[i] / 13浮点型隐式转换成int型(0,1,2,3)此时cardsnumber[i]的值实际是随机出来的cardsnumber[random]值

                    //0-12 num=0 13-25num=1 26-51num=2 52=3,

                    int number = cardsnumber[random] % 13; // 得到数字牌求余的结果为(0-12number的值0-12 ,13-25number的值0-12,26-51number的值0-12,52number的值0)

                    Console.WriteLine("第" + (i + 1) + "张牌:" + colors[num] + "   " + cards[number]); // 输出牌的花色和大小

                Console.WriteLine();

                }

                

            Console.ReadLine();

           

        }

    }

}

代码改成这样似乎是随机了,但是需要按回车键单个输出每一张牌。

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照