&gt; <i>here was the comment above the previous implementation</i><p>That&#x27;s about a different RNG than the one that Mike Malone&#x27;s article was about. The one you&#x27;re pointing to was used on the C++ side of the world (and so doesn&#x27;t have the concerns of JS numbers), the one the article was about was pure JS.<p>Part of the V8 update was to unify the RNGs (see the patch history), so now both use the same (better) RNG. On the JS side, the new C++ RNG is now used to fill a buffer of random numbers to amortize the cost of calling into C++ code from JS.<p>As for why these implementations were chosen: Mike Malone covers the commit history and probable source of the JS implementation fairly well (which is probably all you&#x27;ll really get since it&#x27;s been 6 years or so now). The old C++ implementation is relatively recent, with some hints to its choosing here: <a href="https:&#x2F;&#x2F;github.com&#x2F;v8&#x2F;v8&#x2F;commit&#x2F;eb381b9444c6b1ec78414d1c9375f67c320cae74" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;v8&#x2F;v8&#x2F;commit&#x2F;eb381b9444c6b1ec78414d1c9375...</a>