从列表中生成新的随机项目

本文关键字:随机 项目 列表 | 更新日期: 2023-09-27 17:57:12

我有一个代码,可以从一个ist生成一个新的随机项目,而不会重复。

   class text_generator
     {
       public int getWordIndex(List<string> source, Random value)
        {
          return value.Next(0, source.Count - 1);
        }
          public bool checkListLength(List<string> source)
        {
          return source.Count == 0;
        }
       public string getText(List<string> source, List<string>                backup_source, Random value)
        {
          if (checkListLength(source))
          {
            source.AddRange(backup_source);
          }
          ;
          int index = getWordIndex(source, value);
          string result = source[index];
          source.RemoveAt(index);
          return result;
      }
  }

然后我打开一个主列表和一个空列表。

text_generator textix = new text_generator();
List<string> hi = new List<string> { "Hi", "Howdy", "Hey" //etc };
List<string> work_hi = new List<string>();

和。。。生成。在使用所有元素之前,它们将始终不同。

Random rand = new Random();
Console.WriteLine(textix.getText(work_hi, hi, rand));

我的问题是:虽然这段代码工作正常,但它似乎有点长。是否可以仅用一种方法进行相同的操作?是否可以不再打开一个列表?我该怎么做?

从列表中生成新的随机项目

您是否考虑过简单地按随机顺序对列表进行排序?

Random rand = new Random();
List<string> hi = new List<string> { "Hi", "Howdy", "Hey" };
List<string> work_hi = hi.OrderBy(x => rand.Next()).ToList();