对于整数区间获取随机整数:

m,n均为整数,且n>m。

获取[m,n)区间内的随机整数:

1 var aNumber = (n - m) * Math.random() + m;
2 var result = Math.floor(aNumber);

获取获取[m,n]区间内的随机整数:

1 var aNumber = (n+1- m) * Math.random() + m;
2 var result = Math.floor(aNumber);

获取对于区间(m,n)的随机整数,JS代码:

1 var aNumber = (n-1- m) * Math.random() + (m+1);
2 var result = Math.floor(aNumber);

获取获取(m,n]区间内的随机整数:

1 var aNumber = (n- m) * Math.random() + (m+1);
2 var result = Math.floor(aNumber);

推导过程:

Math.random()的值为数学上的半开半闭区间[0,1),即0≤Math.random()<1。在JS中生成限定范围内的随机整数其实也是基于Math.random()来操作实现的随机整数。

1、通过Math.random()获取[0,10)之间的随机整数。

1 var aNumber = 10 * Math.random();
2 var result = Math.floor(aNumber);

aNumber的值在[0,1)区间取值为0,依次类推到[9,10)区间取值为9,每个区间长度值一样,所代表的数同样多,aNumber在每个区间内的概率相同。

先看几个类似的随机整数的试题:

1、JS随机生成[20,50)区间内的随机整数;

2、JS随机生成[20,50]区间内的随机整数;

3、JS随机生成(20,50)区间内的随机整数;

4、JS随机生成(20,50]区间内的随机整数。

先转换为数学问题(需要基础的初中数学代数知识)

为书写方便,我们令α=Math.random(),0≤α<1,K代表生成区间内的随机整数。

1、JS随机生成[20,50)区间内的随机整数。

20≤K<50

化简:

0≤K-20<30

0≤(K-20)/30<1

即(K-20)/30=α

K=30α+20

由于α是[0,1)的随机数,30α+20还不满足要求,需要整数,对K进行向下取整操作:Math.floor(K)

转换为JS代码:

1 var aNumber=(50-20)*Math.random()+20 ;
3 var result= Math.floor(aNumber);

推广到一般情况下,对于正整数区间[m,n)的随机整数,JS代码:

var aNumber = (n - m) * Math.random() + m;
var result = Math.floor(aNumber);

2、JS随机生成[20,50]区间内的随机整数;

与“JS采用随机生成[20,50)区间内的随机整数”相比,就是一个需要取末尾闭区间,随机整数要可以取50。

等效于JS采用Math.floor()随机生成[20,50+1]区间内的随机整数;

推广到一般情况下,对于区间[m,n]的随机整数,JS代码:

1 var aNumber = (n+1 - m) * Math.random() + m;
2 var result = Math.floor(aNumber);

思考:采取下列方式似乎同样可以获得[20,50]的随机整数,这么做会有什么问题?

1 var aNumber = (50 - 20) * Math.random() + 20;
2 var result = Math.round(aNumber);

即对[20,50)区间内的随机数进行四舍五入的操作,同样可以实现K的取值范围为[20,50],这样做会产生什么问题?

3、JS采用Math.floor()随机生成(20,50)区间内的随机整数;

等效于JS采用Math.floor()随机生成[21,50)区间内的随机整数;

推广到一般情况下,对于区间(m,n)的随机整数,JS代码:

1 var aNumber = (n-1 - m) * Math.random() + (m+1);
2 var result = Math.floor(aNumber);

4、JS采用Math.floor()随机生成(20,50]区间内的随机整数。

等效于JS采用Math.floor()随机生成[21,51)区间内的随机整数;

推广到一般情况下,对于区间(m,n]的随机整数,JS代码:

1 var aNumber = (n - m) * Math.random() + m+1;
2 var result = Math.floor(aNumber);

思考:采用Math.ceil()与Math.random()实现上述随机整数可能产生什么问题? 如果不明白可以到下方留言哦。

JS生成限定整数区间范围内的随机整数的更多相关文章

  1. js生成一定范围内的随机整数

    Math.floor(Math.random()*(m-n+1)+n) Math.floor(Math.random() * (50 - 1 + 1) + 1): 生成1-50内的随机整数

  2. 【VBA】返回指定范围内的随机整数

    返回指定范围内的随机整数: Sub main() Randomize Debug.Print 随机整数(1, 2) End Sub Function 随机整数(a As Integer, b As I ...

  3. js 获取某个某个区间内的随机整数

    //获取某个某个区间内的随机整数 ,获取到的值域为[min,max)function get_random_num(min,max){ if(/^-?\d+$/.test(min) && ...

  4. js输出指定n位数的随机数的随机整数方法【转发】

    /** * Description:[输出指定n位数的随机数的随机整数] * * @param n 指定n位数 * */ function RndNum(n) { var rnd = "&q ...

  5. js生成一个指定范围内的随机整数

    function __random(start=0, end=1) { return Math.floor(Math.random() * (end - start + 1) + start); } ...

  6. js产生任意2个区间内的随机整数

    var code = myRound(30,100); function myRound(begin,end){ var num = Math.round(Math.random()*(end-beg ...

  7. 通过JS生成由字母与数字组合的随机字符串

    在项目中可能需要随机生成字母数字组成的字符,如生成3-32位长度的字母数字组合的随机字符串(位数不固定)或者生成43位随机字符串(位数固定) 使用Math.random()与toString()方法的 ...

  8. 【前端】JavaScript获取指定范围内的随机整数

    function getRandomIntNumber(min, max) { var span = max - min + 1; var result = Math.floor(Math.rando ...

  9. JS生成指定范围内的随机数(支持随机小数)

    直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...

随机推荐

  1. 用C写一个简单的推箱子游戏(一)

    我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱 ...

  2. 每日一题 LeetCode 679. 24点游戏 【递归】【全排列】

    题目链接 https://leetcode-cn.com/problems/24-game/ 题目说明 题解 主要方法:递归 + 全排列 解释说明: 将 4 个数进行组合形成算式,发现除了 (a❈b) ...

  3. git 本地回滚到上一个版本

    linux下是 git reset --hard HEAD^ windows下是 git reset --hard HEAD"^"

  4. 实验一 HTML基本标签及文本处理

    实验一 HTML基本标签及文本处理 [实验目的] 1.掌握利用因特网进行信息游览.搜索,下载网页.图片.文字和文件: 2.对给定的网站,能指出网站的链接结构.目录结构.页面布局方式: 3.掌握HTML ...

  5. Mac快捷键整理(随时更新)

    一.文字编辑 快捷键 含义 解释 control + A 到行首 A没找到对应单词,暂时认为A是字母表的开始 control + E 到行尾 E是end的缩写

  6. 基于Python的接口自动化实战-基础篇之读写配置文件

    引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...

  7. 旋转子段 (思维stl)

    题目: 大概意思就是给你一个序列,你可以选择一段区间使它左右翻折一遍,然后呢,从1到n找一遍,看a[i]==i的数最多是多少. 其实刚才我已经把暴力思路说出来了,枚举每一个区间长度,枚举每一个左端点, ...

  8. 对于72种常用css3的使用经验

    对于72种常用css3的使用经验 保存网站源码 目的 保证有足够的css和js文件源码 拿到当前网页的整体布局 本地化 创建web项目 将web项目创建出来 在项目中创建一个文件夹 将所有的js和cs ...

  9. 010_Markdown学习

    目录 Markdown学习 标题 三级标题 四级标题 五级标题 六级标题 字体 引用 分割线 图片 超链接 列表 表格 代码 Markdown学习 标题 三级标题 四级标题 五级标题 六级标题 字体 ...

  10. github初始化版本

    git命令上传初始化项目 (1)先去github创建自己的项目版本 (2)然后找到自己想要上传代码版本的目录$ git init $ git add ./src ./pom.xml $ git com ...