Per this article on c++'s random_device and mt19937 random number engine http://www.pcg-random.org/posts/cpps-random_device.html the author states the impact of seeding mt19937 with random_device EQEMU code does exactly what he says not to do. If you look at https://github.com/EQMacEmu/Server/blob/54f2877ff4f42d57057f1b210f0318062399f311/common/random.h which is random.h in its constructor Reseed() is called. Reseed() looks like... Code: [ Only registered users can see the bbcode. Click Here To Register... ] and Random is initialized as a global variable inside Zone. That means for each zone the RNG is only seeded once, and it's with a static UINT. This static UINT changes per each zone object, but that's irrelevant since each zone is its own entity. You can tell by the comments that the person who wrote this code knows better seeding can be done with seed_seq which, is what the article above states should be done. http://www.pcg-random.org/posts/cpp-seeding-surprises.html I wrote a program that uses EQEMU's Random.h class and ran tests. Here's a slightly modified Random.h Code: [ Only registered users can see the bbcode. Click Here To Register... ] and here's my main class that implements this and does some logging Code: [ Only registered users can see the bbcode. Click Here To Register... ] What this program does is run each test (4 modes) and rolls 1 million times each, gathering info on the distribution of numbers, how many times the number rolled the same as the previous number (streaks) and how many times the number rolled the same as the previous number +/- 1 (close streaks).