Chrome 修复 JS 引擎随机数没那么随机的问题

在过去几年里,许多人研究都发现Chrome浏览器的V8 JavaScript引擎在用Math.random()函数的时候返回的随机数没有那么随机。今天这个问题已经解决了,即在最新版的Chrome 49中——很快这个版本就会发布。Math.random()是在JavaScript中达成随机性的最常用的方式,这对许多web应用而言是比较重要的组成部分。先前的研究显示,其实在V8引擎中没那么随机。

为了修复这个BUG,谷歌采用新的随机数生成器名为xorshift128+,它修复了先前MWC1616算法没那么随机的问题。

xorshift128+的随机数是真正随机的,而且在性能方面也有很大的提升,但不具备加密的安全性,所以不应该用来做GUID或者其他安全哈希。

谷歌自己对于这个问题的修复也是挺高兴的,而且还鼓励人们能多提交这样的问题。

时间: 2024-10-26 15:58:50

Chrome 修复 JS 引擎随机数没那么随机的问题的相关文章

Chrome修复Safari引擎漏洞

据国外媒体报道,苹果新发布的Safari 4. 0.5修复了16处漏洞.目前,Safari 4.0.5已经面向Windows和Mac用户发布.其中的15个是新查明漏洞,另外1个是去年12月Mac OS系统已修复的漏洞.今天发布的补丁意味着Windows版Safari用户从去年12月份就一直存在此漏洞.据悉,此漏洞被描述为"浏览恶意制作的TIFF图片会导致应用程序中断,或执行任意代码".由于阅读某些可疑数据,或登录恶意站点,其他多数的漏洞也会导致"应用程序中断,或执行任意代码&

js生成随机数之random函数随机示例

 js生成随机数可以使用JavaScript Math.random()内置函数,下面有个不错的示例,大家可以尝试操作下 JavaScript Math.random()内置函数  random函数返回值  返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1)  random函数示例  //返回随机数  document.write(Math.random());  //返回10-20的随机数  document.write(Math.random()*(20-10)+10);  //返

V8 Ignition:JS 引擎与字节码的不解之缘

ARE WE FAST YET? 网站测试并展示了数个 JavaScript 引擎的性能数据,是各家 JS 引擎性能的比武场: 我们看到在这个比武场上,最近 Chrome 出现了多个新条目,其中很多条目都是关于 v8 的 Ignition 新架构的组合,他们是 v8 引擎最近推出的 JS 字节码解释器. 纵览各个 JS 引擎的实现,我们发现基于字节码的实现是主流.例如苹果公司的 JavaScriptCore (JSC) 引擎,2008 年时他们引入了 SquirrelFish(市场名 Nitro

js实现从数组里随机获取元素

 这篇文章主要介绍了js实现从数组里随机获取元素的方法,以及个人封装的js代码分享,十分的实用,这里推荐给小伙伴们     基础知识: 复制数组: (1)循环遍历复制(不推荐)   代码如下: var arry = [1,5,9,7], new_arry = [], n = 0, len = arry.length; for(;n<len;n++){ new_arry.push(arry[n]); }   (2)concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回

js生成随机数(指定范围)的实例代码_javascript技巧

1.随机生成4位数的随机数 <script language="javascript"> /** * 随机生成4位的随机数 * http://www.yulu.jb51.net */ document.write(parseInt(10*Math.random())); //输出0-10之间的随机整数 document.write(Math.floor(Math.random()*10+1)); //输出1-10之间的随机整数 function RndNum(n){ var

js生成随机数的过程解析_javascript技巧

一.预备知识 Math.ceil(); //向上取整. Math.floor(); //向下取整. Math.round(); //四舍五入. Math.random(); //0.0 ~ 1.0 之间的一个伪随机数.[包含0不包含1] //比如0.8647578968666494 Math.ceil(Math.random()*10); // 获取从1到10的随机整数 ,取0的概率极小. Math.round(Math.random()); //可均衡获取0到1的随机整数. Math.floo

JS产生随机数的用法小结_javascript技巧

代码如下所述: <script> function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.random(); return(Min + Math.round(Rand * Range)); } var num = GetRandomNum(1,10); alert(num); </script> var chars = ['0','1','2','3','4','5','6','7','8','

JS产生随机数的几个用法详解_javascript技巧

JS产生随机数的几个用法详解 <script> function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.random(); return(Min + Math.round(Rand * Range)); } var num = GetRandomNum(1,10); alert(num); </script> var chars = ['0','1','2','3','4','5','6','7

js生成随机数的方法实例_javascript技巧

js生成随机数主要用到了内置的Math对象的random()方法.用法如:Math.random().它返回的是一个 0 ~ 1 之间的随机数.有了这么一个方法,那生成任意随机数就好理解了.比如实际中我们可能会有如下的需要:(1)生成一个 0 - 100 之间的随机整数,那么则可以: parseInt(100*Math.random()); 注意:因为Math.random()的返回值是包括0和1的,所以这里是有生成0和100的可能性的.(2)生成一个从 m - n 之间的随机整数,例如要生成一