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 相关文章推荐
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
jQuery不使用插件及swf实现无刷新文件上传
Dec 08 Javascript
编写简单的jQuery提示插件
Dec 21 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
easyui validatebox验证
Apr 29 Javascript
JS之相等操作符详解
Sep 13 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
May 11 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
Sep 16 Javascript
js实现下拉框二级联动
Dec 04 Javascript
javascript执行上下文、变量对象实例分析
Apr 25 Javascript
Element el-button 按钮组件的使用详解
Feb 01 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的数组与字符串的转换函数整理汇总
2013/07/18 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
详解javascript函数的参数
2015/11/10 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
django实现分页的方法
2015/05/26 Python
python集合用法实例分析
2015/05/30 Python
编写Python CGI脚本的教程
2015/06/29 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
python动态文本进度条的实例代码
2020/01/22 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
师范类求职信
2014/06/21 职场文书
物业工程部岗位职责
2015/02/11 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
JAVA springCloud项目搭建流程
2022/05/11 Java/Android