title: Creating a random name generator. How do I accomplish this?
body: <p>I'm trying to grab a single item from each of the Lists here, and combine them to make a unique name. This is just for kicks. :)</p>
  
  <p>Here are the lists:</p>
  
  <pre><code>List&lt;string&gt; FirstNames = new List&lt;string&gt;()
  {
      "Sergio",
      "Daniel",
      "Carolina",
      "David",
      "Reina",
      "Saul",
      "Bernard",
      "Danny",
      "Dimas",
      "Yuri",
      "Ivan",
      "Laura"
  };
  
  List&lt;string&gt; LastNamesA = new List&lt;string&gt;()
  {
      "Tapia",
      "Gutierrez",
      "Rueda",
      "Galviz",
      "Yuli",
      "Rivera",
      "Mamami",
      "Saucedo",
      "Dominguez",
      "Escobar",
      "Martin",
      "Crespo"
  };
  
  List&lt;string&gt; LastNamesB = new List&lt;string&gt;()
  {
      "Johnson",
      "Williams",
      "Jones",
      "Brown",
      "David",
      "Miller",
      "Wilson",
      "Anderson",
      "Thomas",
      "Jackson",
      "White",
      "Robinson"
  };
  </code></pre>
  
  <p>I know I get a single item via an index, and I also know that I can use the Random class to generate a random number from 0 to ListFoo.Count.</p>
  
  <p>What I don't know is how to check if a random permutation has already been drawn from the collections.</p>
  
  <p>I've thought about using the tuple class:</p>
  
  <pre><code>List&lt;Tuple&lt;int,int,int&gt;&gt; permutations = new List&lt;Tuple&lt;int,int,int&gt;&gt;();
  </code></pre>
  
  <p>But I'm having a brainfart here. ;) Any guidance? I'm not really looking for the entire code to this simple problem, just a suggestion or hint. </p>
  
  <hr>
  
  <p><strong>EDIT</strong></p>
  
  <p>Thanks to the suggestions given here, here what I've come up with. Any room for improvements?</p>
  
  <pre><code>static void Main(string[] args)
  {
      List&lt;string&gt; FirstNames = new List&lt;string&gt;()
      {
          "Sergio",
          "Daniel",
          "Carolina",
          "David",
          "Reina",
          "Saul",
          "Bernard",
          "Danny",
          "Dimas",
          "Yuri",
          "Ivan",
          "Laura"
      };
  
      List&lt;string&gt; LastNamesA = new List&lt;string&gt;()
      {
          "Tapia",
          "Gutierrez",
          "Rueda",
          "Galviz",
          "Yuli",
          "Rivera",
          "Mamami",
          "Saucedo",
          "Dominguez",
          "Escobar",
          "Martin",
          "Crespo"
      };
  
      List&lt;string&gt; LastNamesB = new List&lt;string&gt;()
      {
          "Johnson",
          "Williams",
          "Jones",
          "Brown",
          "David",
          "Miller",
          "Wilson",
          "Anderson",
          "Thomas",
          "Jackson",
          "White",
          "Robinson"
      };
  
      var permutations = new List&lt;Tuple&lt;int, int, int&gt;&gt;();
      List&lt;string&gt; generatedNames = new List&lt;string&gt;();
  
      Random random = new Random();
      int a, b, c;
  
      //We want to generate 500 names.
      while (permutations.Count &lt; 500)
      {
          a = random.Next(0, FirstNames.Count);
          b = random.Next(0, FirstNames.Count);
          c = random.Next(0, FirstNames.Count);
  
          Tuple&lt;int, int, int&gt; tuple = new Tuple&lt;int, int, int&gt;(a, b, c);
  
          if (!permutations.Contains(tuple))
          {
              permutations.Add(tuple);
          }
      }
  
      foreach (var tuple in permutations)
      {
          generatedNames.Add(string.Format("{0} {1} {2}", FirstNames[tuple.Item1], 
                                                          LastNamesA[tuple.Item2],
                                                          LastNamesB[tuple.Item3])
          );
      }
  
      foreach (var n in generatedNames)
      {
          Console.WriteLine(n);
      }
  
      Console.ReadKey();
  }
  </code></pre>