title: Generate list of random values and also get a new generator
body: <p>I'm using <code>System.Random</code> and the <code>Random</code> typeclass in my application to generate random numbers.  However I'd like to generate a list of random Floats of arbitrary length with a function like <code>randoms :: StdGen -&gt; Int -&gt; ([Float], StdGen)</code></p>
  
  <p>Without the constraint of getting a new generator, I could easily write
  <code>randoms gen n = (take n $ randoms gen) :: [Float]</code></p>
  
  <p>However this leaves me with the same random generator I started with, which means if I were to run this function twice in a row I'd get the same list unless I went and used the generator elsewhere to get a new one.</p>
  
  <p>How can I generate an infinite (or arbitrary length) list of random values while also "refreshing" my random generator.</p>