private int IsBeRadNum(int Temp)
        {//这里代码有问题需要修改
            bool IsOK = false;
            for (int i = 0; i < Number.Length; i++)
            {
                if (Number[i] == Temp)
                {
                    IsOK = true;
                    break;
                }                
            }
            if (IsOK == true)
            {
                Temp = Rand.Next(Min, Max);
                IsBeRadNum(Temp);
            }
            return Temp;
        }
上面的代码随机产生一个在MIN 和MAX区间的数。但是在若干次随即之后总有相同的数字在里面。这个是为什么啊。

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;class Test
    {
      const  int Min = 20;
      const  int Max = 50;
      const  int N   = Max - Min;
      static List<int> Number = new List<int>(N);
      static Random Rand = new Random();
      
      static int GetRandNum()
      {
        int Temp = Rand.Next(Min, Max);
        if (Number.Count >= N) return Temp;
        if (Number.Contains(Temp)) return GetRandNum();
        Number.Add(Temp);
        return Temp;
      }
      
      static void Main()
      {
        Console.WriteLine(GetRandNum());
        Console.WriteLine(GetRandNum());
        Console.WriteLine(GetRandNum());
        Console.WriteLine(GetRandNum());
        Console.WriteLine(GetRandNum());
      }
    }
      

  2.   

                    //....
                    Temp = Rand.Next(Min, Max);
                    Temp = IsBeRadNum(Temp); //这个地方应该加上Temp = 
                    //....
      

  3.   

    哦,原来生成一个随即数组,要求里面的数不能有重复
    我在控制台里的代码如下:    class Program
        {
            static void Main(string[] args)
            {
                //声明一个泛型集合
                  List<int> list = new List<int>();
                for (int i = 0; i < 20; i++)//这里添加了20个数,你也可以添加多个
                  {
                    list.Add(i);
                }            //定义要生成的数组
                  int[] array = new int[5];//这里为5,大小可以自己定,不过不要超过list里面数的大小
                  for (int i = 0; i < array.Length; i++) 
                {
                    Random random=new Random();
                    
                    //下面的代码保证了会不重复
                    array[i] = list[(int)(random.NextDouble() * list.Count)];
                    list.Remove(array[i]);
                }            //输出生成的不重复的随即数组
                  for (int i = 0; i < array.Length; i++) 
                {
                    Console.Write(array[i]+" ");
                }
                Console.ReadLine();
            }
        }    
      

  4.   

    我2楼的代码已经满足LZ的要求了。更多讨论请参考:http://topic.csdn.net/u/20080308/02/5f1d10b6-cfe0-4e1a-a994-adb93ce116fa.html