js生成随机数的过程解析


Posted in Javascript onNovember 24, 2015

一、预备知识

Math.ceil(); //向上取整。

Math.floor(); //向下取整。

Math.round(); //四舍五入。

Math.random(); //0.0 ~ 1.0 之间的一个伪随机数。【包含0不包含1】 //比如0.8647578968666494

Math.ceil(Math.random()*10);   // 获取从1到10的随机整数 ,取0的概率极小。

Math.round(Math.random());  //可均衡获取0到1的随机整数。

Math.floor(Math.random()*10); //可均衡获取0到9的随机整数。

Math.round(Math.random()*10); //基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。

因为结果在0~0.4 为0,0.5到1.4为1...8.5到9.4为9,9.5到9.9为10。所以头尾的分布区间只有其他数字的一半。

二、生成[n,m]的随机整数
函数功能:生成[n,m]的随机整数。

在js生成验证码或者随机选中一个选项时很有用。。

//生成从minNum到maxNum的随机数
function randomNum(minNum,maxNum){ 
 switch(arguments.length){ 
 case 1: 
  return parseInt(Math.random()*minNum+1,10); 
 break; 
 case 2: 
  return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); 
 break; 
  default: 
  return 0; 
  break; 
 } 
}

过程分析:
Math.random()生成[0,1)的数,所以Math.random()*5生成{0,5)的数。

通常期望得到整数,所以要对得到的结果处理一下。

parseInt(),Math.floor(),Math.ceil()和Math.round()都可得到整数。

parseInt()和Math.floor()结果都是向下取整。

所以Math.random()*5生成的都是[0,4] 的随机整数。

所以生成[1,max]的随机数,公式如下:

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

所以生成[0,max]到任意数的随机数,公式如下:

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

所以希望生成[min,max]的随机数,公式如下:

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

以上就是关于js生成随机数的全面解析,很细致,希望可以帮到大家。

Javascript 相关文章推荐
原生javascript实现无间缝滚动示例
Jan 28 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
AngularJS国际化详解及示例代码
Aug 18 Javascript
JSON对象 详解及实例代码
Oct 18 Javascript
bootstrap fileinput完整实例分享
Nov 08 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
JS获取指定月份的天数两种实现方法
Jun 22 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
vue中的router-view组件的使用教程
Oct 23 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 Javascript
jquery制作图片时钟特效
Mar 30 #Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 #Javascript
JS鼠标拖拽实例分析
Nov 23 #Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 #Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 #Javascript
jquery实现图片放大镜功能
Nov 23 #Javascript
jquery自定义表格样式
Nov 23 #Javascript
You might like
PHP实现文件安全下载
2006/10/09 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
iscroll.js滚动加载实例详解
2017/07/18 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python如何求解两数的最大公约数
2018/09/27 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python中metaclass原理与用法详解
2019/06/25 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
大学应届毕业生个人求职信
2013/09/23 职场文书
高一生物教学反思
2014/01/17 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
保卫工作个人总结
2015/03/03 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL