javascript不用Math.random()怎么得到随机数

g1oam
  • 34

javascript不用Math.random()怎么得到随机数

回复
阅读 5.6k
4 个回答

看你具体需求。

实际上Math.random得到的也只是伪随机数。如果只是要得到一个看起来像随机数的数。

可以通过new Date().valueOf(),然后取最后两位。当然还有更复杂的方式,具体看你需求。

给你个标准答案

let randArr = window.crypto.getRandomValues(new Uint8Array(16));

getRandomValues 可以将类型数组填入随机数 得到一个固定长度的随机数组 每个元素都是固定大小的 但是可以按位组合起来得到一个完整的数

getRandomValues

Math.random()产生的随机数是伪随机数,伪随机数产生算法有很多:线性同余、平方取中、梅森旋转算法等

比如线性同余实现:

function rnd( seed ){
        seed = ( seed * 9301 + 49297 ) % 233280; 
        return seed / ( 233280.0 );
    };
    
    function rand_range(min,max,exact){
        today = new Date(); 
        seed = today.getTime();
        if (arguments.length === 0) 
        {
            return native_random();
        } 
        else if (arguments.length === 1) 
        {
            max = min;
            min = 0;
        }
        var range = min + (rnd( seed )*(max - min));
        return exact === void(0) ? Math.round(range) : range.toFixed(exact);
    };

参考:http://www1.qdfuns.com/blog-5...

时间戳 就不错

宣传栏