textbox1 里有若干行数据,如:111111
222222
333333
444444
555555要如何将这些数据随机输出到textbox2?例如输出后为如下这种随机的行,不要按顺序输出。222222
555555
111111
333333
444444

解决方案 »

  1.   

    List<string> list=new List<string>();
    list.Add("111111");
    list.Add("222222");
    list.Add("333333");
    .......List<string> resultList=new List<string>();
    Random rnd=new Random();while(list.Count>0)
    {
      string str= list[rnd.Next(0,list.Count)];
      resultList.Add(str);
      list.Remove(str);
    }resultList这里面就是随机后的了
      

  2.   

    text2.Text = string.Join("\r\n", text1.Lines.OrderBy(x => Guid.NewGuid().ToString()));
      

  3.   

    其实所谓的随机数,并不是真正的随机数。从概率上来说随机应该是平均分布,而不是正态分布。
    以前在CoolShell上看到一篇文章讨论洗牌算法,并列出了几种算法洗牌后,每张牌出现位置的统计,基本谈不上随机。最后给出了一个算法,翻译成C#大概是下面的样子,楼主参考:
    static void ShuffleArray_Fisher_Yates(List<string> arr, int len)
    {
    Random r = new Random(1); int i = len, j;
    string temp;
    if (i == 0) return;
    while (--i > 0)
    {
    j = r.Next(100000) % (i + 1);
    temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
      

  4.   

    就用Random随机读一行,删除一行!
      

  5.   


    会报错
    与“string.Join(string, string[])”最匹配的重载方法具有一些无效参数
    无法从“System.Linq.IOrderedEnumerable<string>”转换为“string[]”
      

  6.   


    会报错
    与“string.Join(string, string[])”最匹配的重载方法具有一些无效参数
    无法从“System.Linq.IOrderedEnumerable<string>”转换为“string[]”

    VS2008加上一个ToArray()text2.Text = string.Join("\r\n", text1.Lines.OrderBy(x => Guid.NewGuid().ToString()).ToArray());
      

  7.   


    会报错
    与“string.Join(string, string[])”最匹配的重载方法具有一些无效参数
    无法从“System.Linq.IOrderedEnumerable<string>”转换为“string[]”

    VS2008加上一个ToArray()text2.Text = string.Join("\r\n", text1.Lines.OrderBy(x => Guid.NewGuid().ToString()).ToArray());你太强了,现在成功了,感谢!