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 跳转页面延迟2种方法
Mar 29 Javascript
js调试系列 断点与动态调试[基础篇]
Jun 18 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 Javascript
bootstrapValidator自定验证方法写法
Dec 01 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
React中阻止事件冒泡的问题详析
Apr 12 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
微信小程序实现时间戳格式转换
Jul 20 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
JS实现页面侧边栏效果探究
Jan 08 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 foreach正序倒序输出示例代码
2014/07/01 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
js保留两位小数使用toFixed实现
2013/07/29 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
python 写的一个爬虫程序源码
2016/02/28 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python实现图像拼接功能
2020/03/23 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
大学生入党自我鉴定
2013/10/31 职场文书
锦旗标语大全
2014/06/23 职场文书
2014年营销工作总结
2014/11/22 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
学雷锋活动简报
2015/07/20 职场文书
python基础之停用词过滤详解
2021/04/21 Python
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技
nginx配置指令之server_name的具体使用
2022/08/14 Servers