生成1-35 这个35个数字 而后随机分成7组 每组包含5个数

首先是生成1-35 这个35个数字 而后随机分成7组 每组包含5个数
但每个数不能重复 比如第一组里有1这个数 那剩下的6组 包括第一组的另外4个数 只能在2-35里面随机组成

static void Main(string[] args)
        {
            //   首先是生成1-35 这个35个数字 而后随机分成7组 每组包含5个数
            //但每个数不能重复 比如第一组里有1这个数 那剩下的6组 包括第一组的另外4个数 只能在2-35里面随机组成

            //首先生成35个数字
            List<int> dataSource = new List<int>();
            for (int i = 1; i <= 35; i++)
                dataSource.Add(i);
            //开始随即分组,外侧循环7次,分为7组
            List<List<int>> groups = new List<List<int>>();
            for (int i = 0; i < 7; i++)
            {
                //内侧循环5次,每组生成5个数字
                List<int> lst = new List<int>();
                Console.WriteLine("第{0}个分组的数字为:", i + 1);
                for (int j = 0; j < 5; j++)
                {
                    //随即取数字,根据dataSource的长度来随即一个索引,利用这个索引取出dataSource中的数字假如分组中,然后将这个数字从dataSource中移除
                    int index = new Random().Next(dataSource.Count);
                    int number = dataSource[index];

                    lst.Add(number);
                    dataSource.RemoveAt(index);

                    Console.Write(number + ",");
                }
                groups.Add(lst);//groups存放最后生成的7个分组
                Console.WriteLine();
            }
            Console.Read();
        }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-18
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int zu = 7;//分为7组
            int count = 5;//每组5人
            int total = zu * count;//总人数;
            ArrayList duilie = new ArrayList(); //存储

            for (int i = 0; i < zu * count; i++)
            {
                duilie.Add(i+1); //1-35 按顺序添加至动态数组
            }

            String[] fenzu=new String[total];
            Random rd = new Random();

            for (int j = 0; j < zu * count; j++)
            {
                int num=rd.Next(0,(total-=1));  
                fenzu[j]=duilie[num]+"";
                duilie.RemoveAt(num);

                Console.Write(fenzu[j] + "  ");  
                if((1+j)%5==0)  //分为 5 组
                {
                    Console.WriteLine();
                }
            }
            Console.Read();
        }
    }
}


看不懂再联系

(好像跟下面的方法一样,,哈哈,,不好意啊,,建议采用下面,,详细啊)

第2个回答  2013-09-18
 static void Main(string[] args)
        {
            var num = new int[35] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 };
            var numList = new ArrayList(num);
            var rd = new Random();
            var n1 = new int[7];
            var n2 = new int[7];
            var n3 = new int[7];
            var n4 = new int[7];
            var n5 = new int[7];
            for (var i = 1; i <= 5; i++)
            {
                for (var j = 0; j < 7; j++)
                {
                    int n = rd.Next(0, numList.Count);
                    switch (i)
                    {
                        case 1:
                            n1[j] = Convert.ToInt16(numList[n]);
                            break;
                        case 2:
                            n2[j] = Convert.ToInt16(numList[n]);
                            break;
                        case 3:
                            n3[j] = Convert.ToInt16(numList[n]);
                            break;
                        case 4:
                            n4[j] = Convert.ToInt16(numList[n]);
                            break;
                        case 5:
                            n5[j] = Convert.ToInt16(numList[n]);
                            break;
                    }
                    numList.RemoveAt(n);
                }
            }
            foreach (var t in n1)
            {
                Console.WriteLine(t);
            }
            foreach (var t in n2)
            {
                Console.WriteLine(t);
            }
            foreach (var t in n3)
            {
                Console.WriteLine(t);
            }
            foreach (var t in n4)
            {
                Console.WriteLine(t);
            }
            foreach (var t in n5)
            {
                Console.WriteLine(t);
            }
            Console.Read();
        }

代码很简单,应该能看懂,希望能够帮到你。

第3个回答  2013-09-22
楼下代码都太冗余了。二维数组 7组每组5个元素

List<string> arr = new List<string>();
for (var i = 0; i < 35; i++)
{
arr.Add(Guid.NewGuid().ToString() + i);//Guid 每次都不一样用它排序,分组的时候提出Guid

}
arr.Sort();
string[,] arr1 = new string[7, 5];
for (var j = 0; j < 35; j++)
{
arr1[j / 5, j%5] = arr[j].Substring(36);
}本回答被网友采纳
第4个回答  2018-04-23
Partition[RandomSample[Range[35]], 5]本回答被网友采纳