js中Math.random()生成指定范围数值的随机数

今天有又网友问到我 JavaScript 怎么生成指定范围数值随机数。Math.random() 这个方法相信大家都知道,是用来生成随机数的。不过一般的参考手册时却没有说明如何用这个方法来生成指定范围内的随机数。这次我就来详细的介绍一下Math.random(),以及如何用它来生成制定范围内的随机数。
w3school的random()教程
定义和用法

random() 方法可返回介于 0 ~ 1 之间的一个随机数。
语法

Math.random()

返回值

0.0 ~ 1.0 之间的一个伪随机数。
实例

在本例中,我们将取得介于 0 到 1 之间的一个随机数:

 代码如下 复制代码

<script type="text/javascript">
document.write(Math.random());
</script>

// 输出:
0.15246391076246546

如何生成指定范围值的随机数

看完w3school的教程,应该知道Math.random()方法的基本用法了。
利用 parseInt()、Math.floor() 或者 Math.ceil()进行四舍五入处理

我们看到,直接使用Math.random()方法,生成的是一个小于1的数,所以:

 代码如下 复制代码

Math.random()*5

得到的结果是一个小于5的随机数。而我们通常希望得到的是0-5之间的整数,所以我们需要对得到的结果四舍五入处理一下,从而得到我们期望的整数。parseInt()、Math.floor()和Math.ceil()都可以起到四舍五入的作用。

 代码如下 复制代码

var randomNum = Math.random()*5;
alert(randomNum); // 2.9045290905811183 
alert(parseInt(randomNum,10)); // 2
alert(Math.floor(randomNum)); // 2
alert(Math.ceil(randomNum)); // 3

由测试的代码我们可以看到,parseInt()和Math.floor()的效果是一样的,都是向下取整数部分。所以parseInt(Math.random()*5,10)和Math.floor(Math.random()*5)都是生成的0-4之间的随机数,Math.ceil(Math.random()*5)则是生成的1-5之间的随机数。
生成指定范围数值随机数

所以,如果你希望生成1到任意值的随机数,公式就是这样的:

 代码如下 复制代码

// max - 期望的最大值
parseInt(Math.random()*max,10)+1;
Math.floor(Math.random()*max)+1;
Math.ceil(Math.random()*max);

如果你希望生成0到任意值的随机数,公式就是这样的:

 代码如下 复制代码

// max - 期望的最大值
parseInt(Math.random()*(max+1),10);
Math.floor(Math.random()*(max+1));

如果你希望生成任意值到任意值的随机数,公式就是这样的:

// max - 期望的最大值
// min - 期望的最小值
parseInt(Math.random()*(max-min+1)+min,10);
Math.floor(Math.random()*(max-min+1)+min);

怎么样?现在应该很清楚如何去生成你需要随机数了吧?!希望看完这篇文章对你的开发有帮助!这次就到这里了!

时间: 2024-10-04 15:39:18

js中Math.random()生成指定范围数值的随机数的相关文章

在javascript中随机数 math random如何生成指定范围数值的随机数_javascript技巧

今天有朋友向我请教:JavaScript 怎么生成指定范围数值随机数.Math.random() 这个方法相信大家都知道,是用来生成随机数的.不过一般的参考手册时却没有说明如何用这个方法来生成指定范围内的随机数.这次我就来详细的介绍一下Math.random(),以及如何用它来生成制定范围内的随机数. w3school的random()教程 定义和用法 random() 方法可返回介于 0 ~ 1 之间的一个随机数. 语法 Math.random() 返回值 0.0 ~ 1.0 之间的一个伪随机

浅析js随机函数Math.random()

举例子来说:一个打靶游戏,子弹每次都命中准心所示位置是不科学的,加上抖动误差,会使真实感更加强烈;再如,抽奖大转盘程序,每当转盘停止转动时,指针恰好都指向奖品图片的正中点,人们会觉得这个转盘很不自然,指向一个随机位置效果要好得多. 学过 JavaScript 的人都知道,使用随机数很简单,只要一个 Math.random() 就可以获得一个大于等于 0 小于 1 的浮点数.从一个集合中随机选择对象时,使用浮点数离散化后的结果作为选择集的索引: var objects = [...]; var r

浅谈java中Math.random()与java.util.random()的区别_java

今天突然想起来,java产生随机数的问题,上机试了一下,找到了一点区别,在这里总结一下: 直接调用Math.random()是产生一个[0,1)之间的随机数, 如果用 java.util.Random random=new Random();random.nextInt() 这样产生一个长整型的随机数并且与上一次是一样的,如果过一会再产生就不会一样了,例如: for (int i = 0; i < 10; i++) { Random random=new Random(); Thread.sle

在excel中不包含一些单元格数值的随机数方法介绍

  excel是办公尤其是处理数据的一个好帮手,他能给需要进行各类数据处理提供很强大的支持,这是我在工作中遇到的一个问题,是这样的,比如有两个单元格有固定值,而另外还有一个单元格需要取随机数,但又要求不要和那两个有固定值得单元格重复.如何取呢?随机函数?rand()和randbetween()都可以,但是一时间还真想不出满足要求的写法.于是我想用VBA编写也许更简单.于是就有了下文. 工具/原料 方法/步骤 这里为了方便验证,我们将随机数值尽量取小一点,如果你要大一些的随机数,可以修改程序. 设

js中Math之random,round,ceil,floor的用法总结_javascript技巧

<SPAN style="FONT-SIZE: 18px">1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) </SPAN>  Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) [html] view plaincopyprint?<SPAN style="FONT-SIZE: 18px">  2.Math.floor(num); 参数num为一个数值,函数结果为num的

javascript中Math.random()随机数的例子

定义和用法 random() 方法可返回介于 0 ~ 1 之间的一个随机数. 语法 Math.random() 返回值 0.0 ~ 1.0 之间的一个伪随机数. 打开Node,进入终端命令行模式,输入Math.random():   >Math.random()   0.436846193857491 结果是不是依旧如同往常一样稀松平常的小于1的一个伪随机数跳了出来呢. 这个时候,如果别人问你,还有什么其他方案可以生成随机数么,你会想到神马呢. 逝者如斯夫,不舍昼夜. 如果你继续在终端里输入ne

js中Math的属性和方法详解介绍

js中有一个内置对象--Math对象,在有的时候非常有用,我们来分析一下: Math常用属性(注意要大写): E 返回算术常量 e,即自然对数的底数(约等于2.718) LN2 返回 2 的自然对数(约等于0.693) LN10 返回 10 的自然对数(约等于2.302) LOG2E 返回以 2 为底的 e 的对数(约等于 1.414) LOG10E 返回以 10 为底的 e 的对数(约等于0.434) PI 返回圆周率(约等于3.14159) SQRT1_2 返回返回 2 的平方根的倒数(约等

Javascript 生成指定范围数值随机数 By shawl.qiu

javascript|随机 说明:俺本来以为 Js 的随机数应该没啥, 查查手册就得了. 查手册后才知道, 介绍的信息少得可怜呐, 没有介绍生成 m-n 范围的随机数..., 就只是给你一个 Math.random() 了事. 不过经过俺的小小努力之后, 终于让俺摸着门道喽, 问题也就理所当然滴解决掉.  然后就写了个公式, 这样应该可以消失掉这个用法了, 公式: 1. 从1开始 至 任意值linenum parseInt(Math.random()*上限+1); 2. 从任意值开始 至 任意值

Javascript 生成指定范围数值随机数_javascript技巧

不过经过俺的小小努力之后, 终于让俺摸着门道喽, 问题也就理所当然滴解决掉. 然后就写了个公式, 这样应该可以消失掉这个用法了, 公式: 1. 从1开始 至 任意值 linenum parseInt(Math.random()*上限+1); 2. 从任意值开始 至 任意值 linenum parseInt(Math.random()*(上限-下限+1)+下限); 上面的公式使用了 parseInt(), 因此要加1; 如果使用 Math.ceil() 则不需要加1, 俺习惯于这样写... 目录: