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 相关文章推荐
asp.net+js 实现无刷新上传解析csv文件的代码
May 17 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
Dec 25 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
Dec 28 Javascript
jQuery表单域属性过滤器用法分析
Feb 10 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
js+cookies实现悬浮购物车的方法
May 25 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
微信公众号开发之微信支付代码记录的实现
Oct 16 Javascript
node.js中npm包管理工具用法分析
Feb 14 Javascript
解决Nuxt使用axios跨域问题
Jul 06 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
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
Python实现的栈(Stack)
2018/01/26 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
Django之form组件自动校验数据实现
2020/01/14 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
365 Tickets英国:全球景点门票
2019/07/06 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
高一政治教学反思
2014/01/28 职场文书
优秀教师工作感言
2014/02/16 职场文书
毕业生自荐信格式
2014/03/07 职场文书
医德考评自我评价
2014/09/14 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
sql注入报错之注入原理实例解析
2022/06/10 MySQL