title: How can I know the correct size of a std::seed_seq?
body: <p>For space reasons in the title I had to abuse the terminology a bit. Bear a moment.</p>
  
  <p><code>std::seed_seq</code> is used to seed the pseudo-random generators. Usually I prepare a <code>std::array</code> of <code>uint32_t</code> and fill it in of really random numbers (via <code>std::random_device</code>*) and pass the begin and end iterators to a <code>std::seed_seq</code> (see the example code).</p>
  
  <p>The question is, given a certain pseudo random generator (e.g., <code>std::mt19937</code>) how can I know the correct size of the array to seed at its best? 
  About <code>std::mt19937</code>, since the state size is 19937 bits I guess it is 624 <code>uint32_t</code>s, is it the case? And what is the general way to know?</p>
  
  <pre><code>std::mt19937 init_mersenne_twister() {                                        
      //624 is the internal state sequence size of mt19937
      std::array&lt;std::uint32_t, 624&gt; seed_bits{};                               
  
      std::random_device real_random{};                                         
      std::generate(seed_bits.begin(), seed_bits.end(), std::ref(real_random)); 
      std::seed_seq wrapped_seed_bits(seed_bits.begin(), seed_bits.end());      
  
      return std::mt19937(wrapped_seed_bits);                                   
  }                                                                             
  </code></pre>
  
  <p>*I am aware that random_device might not be available, but that's not the point of the question.</p>