首先生成一个0到9的随机数,然后让用户从键盘输入一个数字(应该是有个输入数字的范围的,暂时不管这个范围,基本上输入的数字在1-4之间),比如用a来表示这个输入的数字,然后程序生成a个随机数字,都不同于最开始的数字,并且这a个数字互相也不相同
我写了一段代码,用一个方法生成不同的随机数字,但是这样做生成的a个随机虽然和最初的不同,可是a个数字互相都一样,求高手帮忙看一下改怎么修改才能达到最初的目的,即生成a个不同的随机数字(并且和最初的数字也不同)
class Program
    {
        static void Main(string[] args)
        {
            Random ra = new Random();
            int a = ra.Next(0, 10);
            Console.WriteLine(a);
            Console.WriteLine("\n");
            int testA = getKey("in put a num:");
            for (int i = 1; i <= testA; i++)
            {
                int testB = raNum(a);                Console.WriteLine(testB);
            }
         }
        public static int raNum(int a)
        {
            Random rb = new Random();
            int b = rb.Next(0, 10);
            while (b == a)
                {
                    b = rb.Next(0, 10);
                }
            
                return b;
            
        }
        public static int getKey(string keys)
        {
            Console.WriteLine(keys);
            string key = Console.ReadLine();
            return int.Parse(key);
        }
    }

解决方案 »

  1.   

    不要每次在raNum方法里新生成一个Random实例,用你最开始生成的那个。
            static void Main(string[] args)
            {
                Random ra = new Random();
                int a = ra.Next(0, 10);
                Console.WriteLine(a);
                Console.WriteLine("\n ");
                int testA = getKey("in   put   a   num: ");
                for (int i = 1; i <= testA; i++)
                {
                    int testB = raNum(a, ra);                Console.WriteLine(testB);
                }            Console.ReadLine();
            }        public static int raNum(int a,Random rb)
            {
                //Random rb = new Random();
                int b = rb.Next(0, 10);
                while (b == a)
                {
                    b = rb.Next(0, 10);
                }            return b;
            }
            public static int getKey(string keys)
            {
                Console.WriteLine(keys);
                string key = Console.ReadLine();
                return int.Parse(key);
            } 
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;namespace ConsoleApplication5
    {
        class Program
        {
            static void Main(string[] args)
            {
                Random ra = new Random();
                int a = ra.Next(0, 10);
                Console.WriteLine(a);
                Console.WriteLine("\n ");
                int testA = getKey("in   put   a   num: ");
                ArrayList list = new ArrayList();
                for (int i = 1; i <= testA; i++)
                {
                    int testB = raNum(a, list, ra);
                    list.Add(testB);
                }
                for (int j = 0; j < list.Count; j++)
                {
                    Console.WriteLine(int.Parse(list[j].ToString()));
                }            Console.ReadKey();
            }
            public static int raNum(int a,ArrayList list,Random rb)
            {
                int b = rb.Next(0, 10);
                while(b == a)
                {
                    b = rb.Next(0, 10);
                }
                bool xxx = Compare(a,b,list,rb);
                if (xxx)
                {
                    return b;
                }
                else
                { return raNum(a,list,rb); }
            }        public static bool Compare(int a ,int b, ArrayList list,Random rb)
            {
                bool boo = true;
                for (int i = 0; i < list.Count; i++)
                {
                    if (b == int.Parse(list[i].ToString()))
                    {
                        boo = false;
                    }
                }
                return boo;
            }
            public static int getKey(string keys)
            {
                Console.WriteLine(keys);
                string key = Console.ReadLine();
                return int.Parse(key);
            } 
        }
    }你试试吧