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 相关文章推荐
dropdownlist之间的互相联动实现(显示与隐藏)
Nov 24 Javascript
JavaScript 常见对象类创建代码与优缺点分析
Dec 07 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
学习javascript文件加载优化
Feb 19 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
使用node.js对音视频文件加密的实例代码
Aug 30 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
解决layui轮播图有数据不显示的情况
Sep 16 Javascript
vue实现简单瀑布流布局
May 28 Javascript
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
原生js canvas实现鼠标跟随效果
Aug 02 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函数scandir排除特定目录
2014/06/12 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 调用win32pai 操作cmd的方法
2017/05/28 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
python爬虫基础知识点整理
2020/06/02 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
毕业生的自我评价
2013/12/30 职场文书
班组长安全职责
2014/01/05 职场文书
统计岗位职责
2014/02/21 职场文书
事假请假条范文
2014/04/11 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
孔繁森观后感
2015/06/10 职场文书
爱护公物主题班会
2015/08/17 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
如何通过一篇文章了解Python中的生成器
2022/04/02 Python