在过去几年里,许多人研究都发现Chrome浏览器的V8 JavaScript引擎在用Math.random()函数的时候返回的随机数没有那么随机。今天这个问题已经解决了,即在最新版的Chrome 49中——很快这个版本就会发布。
Math.random()是在JavaScript中达成随机性的最常用的方式,这对许多web应用而言是比较重要的组成部分。先前的研究显示,其实在V8引擎中没那么随机。
为了修复这个BUG,谷歌采用新的随机数生成器名为xorshift128+,它修复了先前MWC1616算法没那么随机的问题。
xorshift128+的随机数是真正随机的,而且在性能方面也有很大的提升,但不具备加密的安全性,所以不应该用来做GUID或者其他安全哈希。
谷歌自己对于这个问题的修复也是挺高兴的,而且还鼓励人们能多提交这样的问题。