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 相关文章推荐
jq选项卡鼠标延迟的插件实例
May 13 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
让浏览器DOM元素最后加载的js方法
Jul 29 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
Jan 11 Javascript
vue.js实现插入数值与表达式的方法分析
Jul 06 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
windows实现npm和cnpm安装步骤
Oct 24 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
js资料prototype 属性
2007/03/13 Javascript
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python读写配置文件的方法
2015/06/03 Python
python基础梳理(一)(推荐)
2019/04/06 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
python实现画循环圆
2019/11/23 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
python SOCKET编程基础入门
2021/02/27 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
硕士研究生个人求职信
2013/12/04 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
岗位职责说明书模板
2014/07/30 职场文书
起诉书范文
2015/05/20 职场文书