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 固定悬浮效果实现思路代码
Aug 02 Javascript
JS实现从连接中获取youtube的key实例
Jul 02 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
Jun 12 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
Jan 22 Javascript
vue抽出组件并传值实例
Jul 31 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
Oct 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
人大复印资料处理程序_查询篇
2006/10/09 PHP
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
用python实现名片管理系统
2020/06/18 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
影视制作岗位职责
2013/12/04 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
幼儿教师研修感言
2014/02/12 职场文书
车间主任岗位职责
2014/03/16 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2014年行政工作总结
2014/11/19 职场文书
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL