下面代码单步调试能显示正确的3排3位的随机数,但直接运行却总是显示3排3位相同的随机数,是什么原因呢?
class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            List<string> temp = test.GetStringList();
            Console.WriteLine(temp[0] + temp[1] + temp[2]);
            Console.ReadKey();
        }
    }
    class Test
    {
        List<string> number = new List<string>();
        private int[] GetNumber()
        {
            int[] temp = new int[3];
            Random ran = new Random();
            for (int i = 0; i < temp.Length; i++)
            {
                temp[i] = ran.Next(1, 10);
            }
            return temp;
        }
        public List<string> GetStringList()
        {
            for (int i = 0; i < 3; i++)
            {
                string str = "";
                int[] temp = null;
                temp = GetNumber();
                for (int j = 0; j < 3; j++)
                {
                    str += temp[j].ToString();
                }
                number.Add(str);
            }
            return number;
        }
    }

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
     
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    using SHDocVw;
    using mshtml;class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            List<string> temp = test.GetStringList();
            Console.WriteLine(temp[0] + temp[1] + temp[2]);
            Console.ReadKey();
        }
    }class Test
    {
        List<string> number = new List<string>();
        private int[] GetNumber()
        {
            int[] temp = new int[3];
            Random ran = new Random();
            for (int i = 0; i < temp.Length; i++)
            {
                temp[i] = ran.Next(1, 10);
                System.Threading.Thread.Sleep(30);
            }
            return temp;
        }    public List<string> GetStringList()
        {
            for (int i = 0; i < 3; i++)
            {
                string str = "";
                int[] temp = null;
                temp = GetNumber();
                for (int j = 0; j < 3; j++)
                {
                    str += temp[j].ToString();
                }
                number.Add(str);
            }
            return number;
        }
    }
      

  2.   

    GetNumber()多加了一行代码System.Threading.Thread.Sleep(30);
      

  3.   

    不是时间的问题,改一处,把Random不要每次都生成。作为整个类的私有成员处理,看我的:    class Program
        {
            static void Main(string[] args)
            {
                Test test = new Test();
                List<string> temp = test.GetStringList();
                Console.WriteLine(temp[0] + " " + temp[1] + " " + temp[2]);
                Console.ReadKey();
            }
        }
        class Test
        {
            List<string> number = new List<string>();
            Random ran = new Random();
            private int[] GetNumber()
            {
                int[] temp = new int[3];            for (int i = 0; i < temp.Length; i++)
                {
                    temp[i] = ran.Next(1, 10);
                }
                return temp;
            }
            public List<string> GetStringList()
            {
                for (int i = 0; i < 3; i++)
                {
                    string str = "";
                    int[] temp = null;
                    temp = GetNumber();
                    for (int j = 0; j < 3; j++)
                    {
                        str += temp[j].ToString();
                    }
                    number.Add(str);
                }
                return number;
            }
        }
      

  4.   

    class Program 
        { 
            static void Main(string[] args) 
            { 
                Test test = new Test(); 
                List <string> temp = test.GetStringList(); 
                Console.WriteLine(temp[0] + temp[1] + temp[2]); 
                Console.ReadKey(); 
            } 
        } 
        class Test 
        { 
            List <string> number = new List <string>(); 
            Random ran = new Random();  //将ran定义为全局变量即可
            private int[] GetNumber() 
            { 
                int[] temp = new int[3]; 
                //Random ran = new Random(); 
                for (int i = 0; i < temp.Length; i++) 
                { 
                    temp[i] = ran.Next(1, 10); 
                } 
                return temp; 
            } 
            public List <string> GetStringList() 
            { 
                for (int i = 0; i < 3; i++) 
                { 
                    string str = ""; 
                    int[] temp = null; 
                    temp = GetNumber(); 
                    for (int j = 0; j < 3; j++) 
                    { 
                        str += temp[j].ToString(); 
                    } 
                    number.Add(str); 
                } 
                return number; 
            } 
        }