如:
  A0-A9
  B0-B9
  C0-C9     后面数字为下标共有30个数  要求,就是在这30个数中,任意选取5个数为一组显示出来,并输出组合的个数  例:  A0 A1 A2 A3 A4
       A0 B0 C0 C1 C2
     等等 .
   最好有示例代码

解决方案 »

  1.   

    ArrayList arr= new ArrayList();
    arr.Add(new string[10]);
    arr.Add(new string[10]);
    arr.Add(new string[10]);
    Random rand = new Random(Guid.NewGuid().GetHashCode());
    for (int i = 0; i < arr.Count; i++)
    {
        Array arr2= arr[i] as Array;
        for (int j = 0; j < 5; j++)
        {
            Console.WriteLine(arr2.GetValue(rand.Next(0,9)).ToString()); 
        }
    }
      

  2.   


    static void Main(string[] args)
            {
                char[] charArray1 = "ABC".ToCharArray();
                char[] charArray2 = "0123456789".ToCharArray();            Random rdm = new Random();            for (int i = 0; i < 10; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {                    int index = rdm.Next(0, 30);
                        int t1 = (int)index / 10;
                        int t2 = index - t1 * 10;
                        string code = charArray1[t1].ToString() + charArray2[t2].ToString();
                        Console.Write(code + " ");
                    }
                    Console.WriteLine();
                }            Console.ReadLine();
            }
      

  3.   

    纯引用1楼的代码:ArrayList arr= new ArrayList();
    arr.Add(new string[10]);
    arr.Add(new string[10]);
    arr.Add(new string[10]);
    Random rand = new Random(Guid.NewGuid().GetHashCode());
    for (int i = 0; i < arr.Count; i++)
    {
      Array arr2= arr[i] as Array;
      for (int j = 0; j < 5; j++)
      {
      Console.WriteLine(arr2.GetValue(rand.Next(0,9)).ToString()); 
      }
    }
      

  4.   

    C(5,30)=30!/25!/5!=142506class Program
    {
        static void Main(string[] args)
        {
            // 生成测试数据 A0-A9, B0-B9, C0-C9
            string[] testData = "ABC".SelectMany(a => "0123456789".Select(b => "" + a + b)).ToArray();        var combinations = Comb(testData, 5);
            foreach (var c in combinations)
            {
                // c 就是组合数列,可以对其进行处理
                Console.WriteLine(string.Join(",", c));
            }
            Console.WriteLine("共{0}种组合", combinations.Count());        File.WriteAllLines(@"d:\test.txt", combinations.Select(c=>string.Join(",", c)));
        }    // 组合枚举方法, 返回数列的全部组合,data=数列,n=每组长度
        static public IEnumerable<T[]> Comb<T>(T[] data, int n)
        {
            int m = data.Length;
            int[] c = Enumerable.Repeat(int.MaxValue, n).ToArray();        for (c[n - 1] = 0; ; c[0]++)
            {
                if (c[0] > m)
                {
                    int p;
                    for (p = 1; p < n; p++)
                        if (c[p] < m - p) break;
                    if (p >= n) yield break;                c[p]++;
                    for (int i = p - 1; i >= 0; i--)
                        c[i] = c[i + 1] + 1;
                }
                yield return c.Select(i => data[i - 1]).ToArray();
            }
        }
    }