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 相关文章推荐
JS date对象的减法处理实现代码
Dec 28 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
Oct 29 Javascript
什么是 AngularJS?AngularJS简介
Dec 06 Javascript
angularjs自定义ng-model标签的属性
Jan 21 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
javascript帧动画(实例讲解)
Sep 02 Javascript
使用express+multer实现node中的图片上传功能
Feb 02 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
Apr 29 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 Javascript
微信小程序 scroll-view的使用案例代码详解
Jun 11 Javascript
vue设置默认首页的操作
Aug 12 Javascript
浅谈node.js中间件有哪些类型
Apr 29 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
处理单名多值表单的详解
2013/06/08 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
Express的路由详解
2015/12/10 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
Node.js自定义实现文件路由功能
2017/09/22 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python调用Redis的示例代码
2020/11/24 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
高级护理专业大学生求职信
2013/10/24 职场文书
总裁办公室主任职责
2014/01/02 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
大学同学聚会感言
2015/07/30 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
OpenCV-Python实现轮廓的特征值
2021/06/09 Python