javascript 随机数打点测试

编程语言的随机数是否靠谱是经常被讨论的一个问题,首先我们知道计算机里的随机数不是真正的随机数,所以检验随机数算法的覆盖率非常重要(尤其是在游戏编程中).

这是一个配合HTML5的canvas进行随机数打点测试的实例:

<!DOCTYPE html>  
<html>  
<head>  
    <title>Random Dot</title>
    <style>
        body{
            background:black;
        }
        #canvas{
            background:white;
            display:block;
            margin:0 auto;
        }
    </style>
    <script>
        window.onload=function(){
            var ctx=document.getElementById('canvas').getContext('2d');
            var x,y;
            var dot=ctx.createImageData(1,1);
            var pix=dot.data;
            pix[0]=0;
            pix[1]=0;
            pix[2]=0;
            pix[3]=255;
            for(var i=0;i<100000;i++){
                setTimeout(function(){
                    x=Math.round(Math.random()*500);
                    y=Math.round(Math.random()*500);
                    ctx.putImageData(dot,x,y);
                },0);
            }
        }
    </script>
</head>  
<body>  
    <canvas id="canvas" width="500px" height="500px"></canvas>
</body>  
</html>  

在支持HTML5的浏览器里(推荐使用Chrome)运行,会看到一块500px*500px的白色区域被打上黑点.

这段代码会调用100000*2次随机数生成函数,你也可以修改for循环中的数值来循环更多次.

你可能会看到类似下图的结果:

可以看出javascript的随机数生成还是比较好的.