生成不重复的随机数

0x00、从一个数组(arr)随机生成有(num)个不相同的值的数组

function createRandom( num, arr ) {
    var arrCache = [],
        objCache = {};

    while( arrCache.length < num ) {

        var randomNum = Math.floor( Math.random() * arr.length );

        //通过判断objCache对象的索引值是否存在 来标记 是否重复
        if( !objCache[randomNum] ) {
            objCache[randomNum] = 1;
            arrCache.push( arr[randomNum] );
        }
    } 

    return arrCache;
}

0x01、生成一个范围数组,然后数组打乱顺序,截取你需要的个数

/*
    num 要产生多少个随机数
    from 产生随机数的最小值
    to 产生随机数的最大值
*/

function createRandom( num ,from ,to ) {
    var arr=[];
    for( var i = from; i <= to; i++ )
        arr.push( i );
    arr.sort(function(){
        return 0.5 - Math.random();
    });
    arr.length = num;

    return arr;
}
原文地址:https://www.cnblogs.com/frontendBY/p/4876547.html