冰冰冰冰冰糖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 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析