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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
JavaScript中双叹号(!!)作用示例介绍
Apr 10 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
javascript学习笔记(一)基础知识
Sep 30 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
Dec 15 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 Javascript
使用js获取身份证年龄的示例代码
Dec 11 Javascript
详解JVM系列之内存模型
Jun 10 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原理之Session Gc的一个小概率Notice
2011/04/12 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
JS中Map和ForEach的区别
2018/02/05 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
小程序使用分包的示例代码
2020/03/23 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python使用minidom读写xml的方法
2015/06/03 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python中的枚举类型示例介绍
2019/01/09 Python
更新修改后的Python模块方法
2019/03/03 Python
python地震数据可视化详解
2019/06/18 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python mysql断开重连的实现方法
2019/07/26 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
以下的初始化有什么区别
2013/12/16 面试题
大一学生假期实习的自我评价
2013/10/12 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
幼儿发展评估方案
2014/06/11 职场文书
导游词开场白
2015/01/31 职场文书
公务员个人总结
2015/02/12 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python