冰冰冰冰冰糖Er 2022-05-03 18:57 采纳率: 90.9%
浏览 45
已结题

为什么把随机数种子放在循环体内部,只会产生一种结果?

class Program
{
static void Main(string[] args)
{
//创建10个对象 通过一个循环 去调用他们各自打招呼的方法
//Student s = new Student();
//Person p = new Person();
//ShuaiGuo sg = new ShuaiGuo();

        Person[] pers = new Person[10];
        
        //Console.WriteLine(r.Next(1, 999));//产生从1到999的随机数
        for (int i = 0; i < pers.Length; i++)
        {
            Random r = new Random();
            int rNumber = r.Next(1, 7);
            switch (rNumber)//rNumber的范围是1-6
            {
                case 1: pers[i] = new Student();
                    break;
                case 2: pers[i] = new Teacher();
                    break;
                case 3: pers[i] = new ShuaiGuo();
                    break;
                case 4: pers[i] = new MeiLv();
                    break;
                case 5: pers[i] = new YeShou();
                    break;
                case 6: pers[i] = new Person();
                    break;
            }
        }


        for (int i = 0; i < pers.Length; i++)
        {
           // pers[i].PersonSayHi();因为这是父类数组,只能调用父类方法。
            if (pers[i] is Student)
            {
                ((Student)pers[i]).StudentSayHi();
              //  pers[i].PersonSayHi();
            }
            else if (pers[i] is Teacher)
            {
                ((Teacher)pers[i]).TeacherSayHi();
            }
            else if (pers[i] is ShuaiGuo)
            {
                ((ShuaiGuo)pers[i]).ShuaiGuoSayHi();
            }
            else if (pers[i] is YeShou)
            {
                ((YeShou)pers[i]).YeShouSayHi();
            }
            else if (pers[i] is MeiLv)
            {
                ((MeiLv)pers[i]).MeiLvSayHi();
            }
            else 
            {
                pers[i].PersonSayHi();
            }

        }
        Console.ReadKey();

    }
}

public class Person
{
    public void PersonSayHi()
    {
        Console.WriteLine("我是人类");
    }
}


public class Student : Person
{
    public void StudentSayHi()
    {
        Console.WriteLine("我是学生");
    }
}

public class Teacher : Person
{
    public void TeacherSayHi()
    {
        Console.WriteLine("我是老师");
    }
}


public class MeiLv : Person
{
    public void MeiLvSayHi()
    {
        Console.WriteLine("我是镁铝");
    }
}


public class ShuaiGuo : Person
{
    public void ShuaiGuoSayHi()
    {
        Console.WriteLine("我是帅锅");
    }
}


public class YeShou : Person
{
    public void YeShouSayHi()
    {
        Console.WriteLine("我是野兽");
    }
}

}

img

  • 写回答

4条回答 默认 最新

  • xuzuning 2022-05-04 09:52
    关注

    相同的种子,会缠身相同的为随机数序列,默认是当前时间

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件