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类中的公有变量和私有变量
Jul 24 Javascript
js中传递特殊字符(+,&)的方法
Jan 16 Javascript
document.forms用法示例介绍
Jun 26 Javascript
jquery中使用循环下拉菜单示例代码
Sep 24 Javascript
每天一篇javascript学习小结(Date对象)
Nov 13 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
Mar 21 Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
js实现滑动进度条效果
Aug 21 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
资料注册后发信小技巧
2006/10/09 PHP
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
基于jquery的15款幻灯片插件
2011/04/10 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
python实现比较两段文本不同之处的方法
2015/05/30 Python
Django 外键的使用方法详解
2019/07/19 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python opencv实现证件照换底功能
2019/08/19 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
学生会竞聘书范文
2014/03/31 职场文书
开学典礼策划方案
2014/05/28 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
三八妇女节标语
2014/10/09 职场文书
机动车交通事故协议书
2015/01/29 职场文书
工作自我评价范文
2019/03/21 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python