title: Difference between Python 2 and 3 for shuffle with a given seed
body: <p>I am writing a program compatible with both Python 2.7 and 3.5. Some parts of it rely on stochastic process. My unit tests use an arbitrary seed, which leads to the same results across executions and languages... except for the code using <code>random.shuffle</code>.</p>
  
  <p>Example in Python 2.7:</p>
  
  <pre><code>In[]:   import random
          random.seed(42)
          print(random.random())
          l = list(range(20))
          random.shuffle(l)
          print(l)
  Out[]:  0.639426798458
          [6, 8, 9, 15, 7, 3, 17, 14, 11, 16, 2, 19, 18, 1, 13, 10, 12, 4, 5, 0]
  </code></pre>
  
  <p>Same input in Python 3.5:</p>
  
  <pre><code>In []:  import random
          random.seed(42)
          print(random.random())
          l = list(range(20))
          random.shuffle(l)
          print(l)
  Out[]:  0.6394267984578837
          [3, 5, 2, 15, 9, 12, 16, 19, 6, 13, 18, 14, 10, 1, 11, 4, 17, 7, 8, 0]
  </code></pre>
  
  <p>Note that the pseudo-random number is the same, but the shuffled lists are different. As expected, reexecuting the cells does not change their respective output.</p>
  
  <p>How could I write the same test code for the two versions of Python?</p>