从arraylist数组中随机取出5个值

解决方案 »

  1.   


    //linq也可以   ArrayList list = new ArrayList();
                list.Add(0);
                list.Add(1);
                list.Add(2);
                list.Add(3);
                list.Add(4);
                list.Add(7);
                list.Add(8);
                int[] abc = (int[])list.ToArray(typeof(int));  var q = (from c in abc
      orderby Guid.NewGuid()
      select c).Take(5);  foreach (int item in q)
      {
      Console.WriteLine(item.ToString());
      }    
      Console.ReadKey();
      

  2.   

    先取出arraylist的Count,然后随机函数 Random(0,Count) 取出随即出来的索引
    arraylist[取出的索引] 就是随机出来的值
      

  3.   

    ArrayList list = new ArrayList();
    Random random = new Random();
    for (int i = 0; i < 5; i++)
    {
       Console.Write(list[random.Next(list.Count)]);
    }
    楼主自己初始化一下list吧。
      

  4.   

    就是获取你ARRAYLIST的大小。。然后通过random根据那个大小来取随机数。。然后根据取出ARRAYLIST[随机数值]的值就OK了。。
      

  5.   

    利用random会取出两条相同的数据
      

  6.   


                ArrayList list1 = new ArrayList();
                for (int i = 1; i <= 50; i++)
                {
                    list1.Add(i);
                }
                ArrayList list2 = new ArrayList();
                Random Rad = new Random();
                for (int i = 0; i < 5; i++)
                {
                    int index = Rad.Next(0, 49);
                    if (list2.Contains(list1[index]))
                    {
                        i--;
                    }
                    else
                    {
                        list2.Add(list1[index]);
                    }
                }
                string s = "";
                for (int i = 0; i < list2.Count; i++)
                {
                    s += list2[i].ToString() + ",";
                }
                Response.Write(s.TrimEnd(','));
      

  7.   

                ArrayList list1 = new ArrayList();
                for (int i = 1; i <= 50; i++)
                {
                    list1.Add(i);
                }
                ArrayList list2 = new ArrayList();
                Random Rad = new Random();
                for (int i = 0; i < 5; i++)
                {
                    int index = Rad.Next(0, 49);
                    if (list2.Contains(list1[index]))
                    {
                        i--;
                    }
                    else
                    {
                        list2.Add(list1[index]);
                    }
                }
                string s = "";
                for (int i = 0; i < list2.Count; i++)
                {
                    s += list2[i].ToString() + ",";
                }
                Response.Write(s.TrimEnd(','));正解
      

  8.   

    5L 还有更简单的写法:  //linq也可以,经测试,此方法仍然有机率取出相同的数字
      int[] abc = Enumerable.Range(0, 10).ToArray();  //生成0-10个数字,放在数组内
      var q = (from c in abc
      orderby Guid.NewGuid()
      select c).Take(5);  foreach (int item in q)
      {
      Console.WriteLine(item.ToString());
      }
      

  9.   

    把这个数组乱序之后,去除前5个:
    list=collections.shuffle(list)
    for ...
      

  10.   

    把这个数组乱序之后,取出前5个:
    list=collections.shuffle(list)
    for ...