javascript 生成指定范围的随机整数

 JavaScript  2018-12-27  admin  3849  5196

javascript 生成指定范围的随机整数

Math.random() 函数返回一个浮点,  伪随机数在范围[0,1),也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

[0,1) === [即从0(包含0)到...1但不包括1(排除1)。

[0,1) === 左闭右开区间

/**
 * 生成指定范围的随机整数
 * @param min
 * @param max
 * @param type
 * @returns int
 */
function getRandInt(min,max,type){
    type = type || 1;
    min = Math.ceil(min);
    max = Math.floor(max);
    switch(type){
        case 1: //得到一个两数之间的随机整数,这个值不小于min(如果min不是整数的话,得到一个向上取整的 min),并且小于(但不等于)max  [min,max)
            return Math.floor(Math.random() * (max - min)) + min;
        case 2: //得到一个两数之间的随机整数,包括两个数在内,这个值比min大(如果min不是整数,那就不小于比min大的整数),但小于(但不等于)max [min,max]
            return Math.floor(Math.random() * (max - min + 1)) + min;
        case 3: //得到一个两数之间的随机整数, (min,max)
            return Math.floor(Math.random() * (max - min-1)) + min+1;
    }
}

不要用舍入来完成这个任务,但是这样做会导致你的随机数处于一个不均匀的分布,这可能不符合你的需求

测试:

//测试
for(var i=0;i<=100;i++){
    document.write(getRandInt(10,15,3)+"<br>");
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


esp32 使用mqtt 通讯

esp32 使用mqtt 通讯基于go的mqtt 客户端packagemain import( &quot;fmt&quot; &quot;github.com/gogf/gf/v2/encoding/gjson&quot; &quot;github.com/gogf/gf/v2/frame/g&quot; &quot;gobot.io/x/gobot&quot; &qu

GoFrame 框架中使用 mqtt 协议通讯

GoFrame 框架中使用 mqtt//SPDX-License-Identifier:MIT //SPDX-FileCopyrightText:2022mochi-mqtt,mochi-co //SPDX-FileContributor:mochi-co packagemqtt import( &quot;flag&quot; &quot;gfmqtt/internal/

laravel 自定义写入日志

laravel 自定义写入日志if(!function_exists(&#39;myLog&#39;)){ /** *生成自定义文件日志内容 *@param$data *@paramstring$title *@parambool$isClear *@returnvoid *@Author:cent123.com */ functionmyLog($data,string$tit

go 递归读取目录,并生成树形结构的数据

go 递归读取目录,并生成树形结构的数据//读取目录中的所有文件,如果是目录则递归读取,生成结构化的树形struct packagemain import( &quot;encoding/json&quot; &quot;fmt&quot; &quot;os&quot; &quot;path/filepath&quot; ) //TreeNode文件的树形结构体 ty