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


Posted in Javascript onOctober 21, 2015

今天有朋友向我请教: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);

看完本篇是不是收获颇多啊,对于随机数 math random的使用是不是明白了,希望本篇文章能够给您带来帮助,谢谢!

Javascript 相关文章推荐
通用javascript脚本函数库 方便开发
Oct 13 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
Dec 20 Javascript
谈谈JavaScript中的函数与闭包
Apr 14 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
Jun 30 Javascript
js使用递归解析xml
Dec 12 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
Jul 24 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 Javascript
详解用node.js实现简单的反向代理
Jun 26 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
Aug 07 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 #Javascript
chrome调试javascript详解
Oct 21 #Javascript
Javascript 计算字符串在localStorage中所占字节数
Oct 21 #Javascript
深入解析JavaScript的闭包机制
Oct 20 #Javascript
JavaScript中字面量与函数的基本使用知识
Oct 20 #Javascript
JavaScript基本的输出和嵌入式写法教程
Oct 20 #Javascript
javascript省市级联功能实现方法实例详解
Oct 20 #Javascript
You might like
PHP4中session登录页面的应用
2008/07/25 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
python 装饰器的使用示例
2020/10/10 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
省优秀教师事迹材料
2014/01/30 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
关于安全演讲稿
2014/05/09 职场文书
2014年项目工作总结
2014/11/24 职场文书
小数乘法教学反思
2016/02/22 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫