如题从1-35个数中随机选出5个,要求不重复,从小到大排序我老郁闷了 呵呵~~ 怎么用 C# 写, 朋友帮帮忙哈

解决方案 »

  1.   

    Random random = new Random(unchecked((int)DateTime.Now.Ticks));
                List<int> list = new List<int>(5);
                for (int i = 0; i < 5; i++)
                {
                    int temp = random.Next(1, 35);
                    if (list.Contains(temp)) { --i; continue; }
                    else list.Add(temp);
                }
      

  2.   

    1楼的都写了,而且写得相当的好,偶认为,偶就来瞎搅和一下:)
    Random random = new Random(unchecked((int)DateTime.Now.Ticks));
    //定义一个随机数,参数是种子,其实可以不必要这个.要也可以,可以让随机更随机!
                List<int> list = new List<int>(5);
    //定义一个类型为int的泛型 List
    //泛型真好用!
                for (int i = 0; i < 5; i++)
    //其实这一行根据 C++ Primer里作者说的,改为
    //            for (int i = 0; i < 5; ++i)
    //效率相对之前的写法要高
    //另外, C++ Primer建议在这种情况下用 i != 5会更好,原因我不明白,书里也没写,偶也没去深究,对不对也不知道.
                {
                    int temp = random.Next(1, 35);
    //产生一个随机数,取值范围是 [1,35)
                    if (list.Contains(temp)) 
    //判断列表里包含 temp 这个随机数
    { --i; 
    //如果是,将 i -1,即"回滚循环"
    continue; 
    //继续下一条循环,以下代码
    }                else list.Add(temp);
    //否则添加随机数 temp到列表
    //其实else在这里可以不要            }
      

  3.   


     Random random = new Random(unchecked((int)DateTime.Now.Ticks));
                List<int> arr = new List<int>(35);
                List<int> list = new List<int>(5);
                for (int i = 0; i < 35; i++)
                {
                    arr.Add(i + 1);
                }
                
                for (int i = 0; i < 5; i++)
                {
                    int temp = random.Next(0, 34-i);
                    list.Add(arr[temp]);
                    arr.Remove(arr[temp]); 
                }
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine(list[i]);
                }
    在vicqqq的基础上,改进了一下下
      

  4.   

    运用的排序法是最有名的排序法:冒泡排序法,但也是效率比较一般的算法,读书时算法学地很差,只记得泡冒,唉,有时间一定要去恶补一下算法.            int capacity = 5;
                List<int> numberGroup = new List<int>(capacity);
                Random rnd = new Random();
                int temp, i;
                for (i = 0; i != 5; ++i)
                {
                    temp = rnd.Next(1, 36);
                    if (numberGroup.Contains(temp))
                        --i;
                    else
                        numberGroup.Add(temp);
                }
                
                for (i = 0; i != capacity; ++i)
                {
                    
                    for (int j = i + 1; j != capacity; ++j)
                    {
                        if (numberGroup[i] > numberGroup[j])
                        {
                            temp = numberGroup[i];
                            numberGroup[i] = numberGroup[j];
                            numberGroup[j] = temp;
                        }
                    }
                }
      

  5.   

     static void Main(string[] args)
            {
                Random rd = new Random(~unchecked((int)DateTime.Now.Ticks));
                List<int> lit = new List<int>(5);
                for (int i = 0; i < 5; i++)
                {
                    int intT = rd.Next(1, 35);
                    if (lit.Contains(intT))
                    {
                        --i;
                        continue;
                    }
                    else
                    {
                        lit.Add(intT);
                    }
                }
                lit.Sort();            for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine(lit[i].ToString());
                }
            }
      

  6.   

    楼主,LikeCode(一楼)写的已经非常详细,已经好了.请给分吧,多给他点.
      

  7.   

    路过
    List<int> vList = new List<int>();
    for (int i = 1; i <= 35; i++) vList.Add(i); // 得到全部1-35的数Random vRandom = new Random();
    List<int> vReturn = new List<int>();
    for (int i = 1; i <= 5; i++)
    {
        int j = vRandom.Next(vList.Count); // 从列表中随机抽取一个
        vReturn.Add(vList[j]);  
        vList.RemoveAt(j); // 从列表中移除抽取的数
    }
    vReturn.Sort(); // 排序
    foreach (int i in vReturn) Console.WriteLine(i); // 输出
    -------
    伴水_清洁工_
      

  8.   

    用3.0写了一下
    static void Foo()
    {
       var values = GetRandomValues().Distinct().Take(5).OrderBy(i => i);
       foreach (var value in values)
          Console.WriteLine(value);
    }static IEnumerable<int> GetRandomValues()
    {
       var r = new Random();
       while (true)
          yield return r.Next(1,36);
    }
      

  9.   

    lz居然是要从大到小排序
    修改一下:
    var values = GetRandomValues().Distinct().Take(5).OrderBy(i => i).Reverse();
      

  10.   

    以上 算法 执行效率 不如  while, for,if 组合的语句 代码 在我机子上, 我在网吧上的 有想要的 Email:  [email protected]