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 相关文章推荐
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
Mar 18 Javascript
JavaScript 性能优化小结
Oct 12 Javascript
Javascript的表单与验证-非空验证
Mar 18 Javascript
JavaScript几种数组去掉重复值的方法推荐
Apr 12 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
详解ECharts使用心得总结
Dec 06 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
Move.js入门
Feb 08 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
Apr 18 Javascript
了解javascript中的Dom操作
May 27 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
Oct 31 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 读取文件乱码问题
2010/02/20 PHP
php 中英文语言转换类代码
2011/08/11 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
python进程与线程小结实例分析
2018/11/11 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
Ext 今日学习总结
2010/09/19 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
QA工程师岗位职责
2013/11/20 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
群众路线剖析材料
2014/09/30 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
房屋出售授权委托书
2014/10/12 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
驳回起诉裁定书
2015/05/19 职场文书
redis限流的实际应用
2021/04/24 Redis