title: What does Random(int seed) guarantee?
body: <p>I'm working on a project, that relies assigning users random (nothing fancy, just uniformly) subsets of a larger set. Each user has a unique identifier from a set isomorphic to integers. There are two approaches to doing this, as far as I can see.</p>
  
  <ol>
  <li>Create a database junction table between users and keyed elements of the aforementioned larger set with some function once for each user. This can be somewhat impractical for my needs, so I would rather do...</li>
  <li>At run-time determine the subset by a similar function but use the unique user id as seed value, and just have the set in memory. Next time it's needed it's created again, from a larger set.</li>
  </ol>
  
  <p>So my question is, if I use the .NET Random object to create the second function using user-id as a seed value, does Microsoft guarantee not to change the Random algorithm in the future? I.e. <strong>will all new Random(n)'s Next() sequences be the same forever on all machines</strong>?</p>
  
  <p>Alternatively I could create my own random generator, and package it with my code. In fact, this is what I'll probably do, but I'm still curious to know the answer.</p>