javascript如何产生不重复随机数?

更新日期: 2019-02-24阅读: 1.8k标签: 随机数

使用JavaScript中的math.random()方法产生随机数,将产生的随机数放入数组中并判断是否已存在,若已存在则重新生成。以此方便可生成不重复随机数。


JavaScript中实现产生不重复随机数代码如下:

/// <summary>
/// 生成一个指定范围的随机数
/// </summary>
/// <param name="start">起始值</param>
/// <param name="end">终止值</param>
function newNumber(start,end){
  return Math.round(Math.random()*(end-start)+start);//生成在[start,end]范围内的随机数值,只支持不小于0的合法范围
}
/// <summary>
/// 目标数字是否已经存在于现有数字集合中
/// </summary>
/// <param name="para">现有数字集合</param>
/// <param name="num">目标数字</param>
function isHaveThisNumber(para,num){
    //拒绝无效的数组
    if(typeof(para) == "object")
    {
        if(para.length==0)
        {
            NGLogger.Info("数组为空");
            return false;
        }
    }
    for(var i=0;i<para.length;i++){
        if(para[i]==num){
            NGLogger.Info("与第【"+(i+1)+"】个元素重复,正在重新生成...");
            return true;//与目标数组有重复
        }
    }
    return false;
}
/// <summary>
/// 生成一个不重复的随机数数组
/// </summary>
/// <param name="start">起始值</param>
/// <param name="end">终止值</param>
/// <param name="size">随机数大小</param>
function newRandomNumbersWithNoRepeat(start,end,size){
    var para=new Array();//目标随机数组
    var rnum;//当前随机数
    var currentIndex=0;//当前随机数组的索引
    if(start>end||start<0||end<0||size<0){
        NGLogger.Info("无效参数");
        return;
    }
    if(end-start+1<size){//验证随机数个数是否超出随机数范围
        NGLogger.Info("随机数范围大于随机区间");
        return;
    }
    for(var i=0;i<size;i++){//生成 size 个不重复的随机数
        rnum=newNumber(start,end);//获取随机数
        if(isHaveThisNumber(para,rnum)){//是否已经存在
            while(isHaveThisNumber(para,rnum)){//获取新的随机数 直到不重复
                rnum=newNumber(start,end);//重新获取随机数
                NGLogger.Info("发现新的随机数:"+rnum);
            }
        }
        para[currentIndex++]=rnum;//添加到现有数字集合中
    }
    return para;
}

测试一下:

function AppMain(){
    var para=newRandomNumbersWithNoRepeat(1,2000,1000);//生成1到2000范围内
    NGLogger.Info("已经生成"+para.length+"个随机数。\n随机序列为:"+para.toString());
}

链接: https://fly63.com/article/detial/7774

js随机数,通过javascript的random()生成随机数的方法总结

编程中,有时需要采集并处理一批一定范围内的数据,我们当然没必要等到采集到这些数据之后再编程,所以我们需要使用到让代码直接生成随机数供我们使用。这篇文章将总结js随机数生成方法 。

js产生随机数函数,js如何生成随机数

js本身提供了产生随机数的方法:random() 方法可返回介于 0 ~ 1 之间的一个随机数。只是这不能满足我们的需求,所以写了上面这个函数,调用js原生提供的随机数方法

Js如何生成一个不重复的ID?

先看看下面的几个方法:生成[0,1)的随机数的Math.random,例如;获取当前时间戳Date.now;将10进制转换为其他进制的字符串 Number.toString;GenNonDuplicateID的自我进化

js 生成随机数

js 可以使用 Math(算数) 对象来实现随机数的生成。Math.random() 生成 [0,1) 的数,所以 Math.random()*5 生成 {0,5) 的数。通常期望得到整数,所以要对得到的结果处理一下。

Js生成随机数 生成随机字符串的5种方法

使用randomString,e表示长度,默认32位。对定义的数组字符集进行随机选取。生成随机数转成36进制,再截取部分。对字符串集合随机排列,随机输出指定的长度

js生成随机数的方法 - 比如生成1-100随机数

js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!