欢迎来到本网站

全国统一咨询热线:166-2870-3070

新闻中心

新闻中心News Center

联系方式

联系方式Contact infoemation

电话:166-2870-3070

邮箱:support@0707app.com

地址:上海市徐汇区569号数字化创意园1号楼606-607室

当前位置:明翔网络 > 新闻中心 > 获取不重复的随机数算法

获取不重复的随机数算法

文章出处:http://www.ucunicom.com/a/321.html 阅读量:53 发表时间:05-22 17:11
新闻中心

返回不重复的随机数数组。


参数count:获取随机数的个数
参数total:总共的个数
返回值:随机的数组
randomtimu: function (count,total){
var sequence = new Array(total)
var output = new Array(count)

for (let i = 0; i < total; i++)
{
  sequence[i] = i
}
let end = total - 1
for (let i = 0; i < count; i++)
{
  var num = Math.floor(Math.random() * (end + 1))
  output[i] = sequence[num]
  sequence[num] = sequence[end]
  end--
}

return output

},

最后一次编辑于  星期六 18:27  (未经腾讯允许,不得转载)
收藏赞 

3 个评论

  • 喝酸奶只舔盖儿
    喝酸奶只舔盖儿

    前几天我也写了一个,其实直接利用数组的去重算法即可,如果想得到一个固定元素数量的数组,再进行补位:

    var sortN =function(a, b) {
        return a-b;
    };
     
    var remDupl =function(nums = []) {
        let res = [];
        let i = 0;
     
        for (let j = i; j < nums.length; j++) {
            if (nums[j] != nums[i]) {
                i++;
                nums[i] = nums[j];
            }
        }
        res = nums.splice(0, i+1);
        return res;
    }
     
    var randomN =function(len, max) {
        let res = [];
     
        while (res.length < len) {
            for (let i = 0; i < (len-res.length); i++) {
                let c = Math.floor(Math.random() * max) + 1;
                res.push(c);
                res.sort(sortN);
                res = remDupl(res);
            }
        }
     
        return res;
    }


    调用函数的时候加上需要的数组长度和随机数范围即可(之前我写这段程序的目的是一个简单的彩票摇号器)

    比如我需要一个5+2的随机数组合数组:

    var res1 = [];
    var res2 = [];
     
    res1 = randomN(5, 50);
    res2 = randomN(2, 12);
    res = res1.concat(res2);
     
    console.log(res);

全国咨询热线:166-2870-3070

二维码

地址:上海市徐汇区569号数字化创意园1号楼606-607室

版权所有 © 1999-2017 Copyright © 1999-2017 All Rights Reserved

cache
Processed in 0.005457 Second.