title: Generation of new random items from a List
body: <p>I have a code that generates a new random item from a ist without repetition.</p>
  
  <pre><code>   class text_generator
       {
         public int getWordIndex(List&lt;string&gt; source, Random value)
          {
            return value.Next(0, source.Count - 1);
          }
            public bool checkListLength(List&lt;string&gt; source)
          {
            return source.Count == 0;
          }
         public string getText(List&lt;string&gt; source, List&lt;string&gt;                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;
        }
    }
  </code></pre>
  
  <p>Then I open a main list and an empty list.</p>
  
  <pre><code>text_generator textix = new text_generator();
  List&lt;string&gt; hi = new List&lt;string&gt; { "Hi", "Howdy", "Hey" //etc };
  List&lt;string&gt; work_hi = new List&lt;string&gt;();
  </code></pre>
  
  <p>And... Generate. They will always be different until all elements will be used.</p>
  
  <pre><code>Random rand = new Random();
  Console.WriteLine(textix.getText(work_hi, hi, rand));
  </code></pre>
  
  <p><strong>My question is:</strong> While this code works fine, it seems a bit long. Is it possible to make the same with just one method? Is it possible NOT to open one more list? How can I do it?</p>