js random获取随机数,获取任意范围内随机整数 您所在的位置:网站首页 php任意指定3个数中的最大值 js random获取随机数,获取任意范围内随机整数

js random获取随机数,获取任意范围内随机整数

2023-09-04 19:58| 来源: 网络整理| 查看: 265

js random获取随机数,获取任意范围内随机整数 关于random()1.取[n,m)范围随机整数2.取[n,m]范围随机整数

关于random()

若要取随机整数,前提得知道数组API中的Math.random()方法能取0–1的随机数,它的范围是[0,1),也就是取包括0但不包括1的随机数。

其次,数组API中有一个Math.floor()方法代表向下取整,Math.floor(X)的代表的是取≤ X 且最接近X的整数。

那么我们可以通过Math.random()先取得随机数,再通过乘法计算得到大致范围,最后通过Math.floor()进行取整加工就可以达到目的了。

1.取[n,m)范围随机整数

比如,我要取 [0,100) 范围的随机整数,包括0但不包括100:

//[0,1)*100 => [0,100) 范围是0-99.99999...随机数 Math.random() * 100; //向下取整加工,范围变成 0-99 Math.floor(Math.random() * 100);

0-100好理解一点,那我们怎么取 [2,32) 之间随机整数呢,思路相同:

当random取到0时,我们希望最后结果是2,所以需要有个加2的操作,那么32的情况只能拆分成30 + 2,所以应该是先乘法得到30,再有个加2的操作,像这么写:

Math.floor(Math.random() * 30) + 2;

结合上面2个例子,我们大概可以得出一个规律,取 [n,m) 包括n但不包括m的随机整数公式:

Math.floor(Math.random() * (m-n)) + n; 2.取[n,m]范围随机整数

如何取得包含n且包含m的随机整数呢,我们还是以好计算的[0,100]为例子。

按照前面的写法无法取到100,怎么办呢,我们直接在计算时得到一个100.99999,然后向下取整不就是100了,所以我们需要在乘以100的基础上再加上一个1。

需要注意的是加1操作的不能在random乘法计算完之后,你想想如果是乘完后加1,假设random乘法得到0再加个1,那最少的数字就是1了,所以加1必须是在乘法的时候加,所以应该是这样:

Math.floor(Math.random() * 101);

这样根据 [0,1) 的范围算出来的范围就是 [0,101),因为不包括101,所以就是[0,100]了。

针对 [2,32] 呢,简单分析一波,random是0时,我们希望得到2;假设random可以是1,我们希望得算出一个33才行,这样向下取整就能包含32了。

根据上面的分析,所以我们得让random乘法得到一个31,然后再加一个2,应该这么写:

Math.floor(Math.random() * 31) + 2;

我们大概可以得到一个规律,求 [n,m] 范围内的随机整数时,应该这样:

Math.floor(Math.random() * (m - n + 1)) + n;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有