javascript小实例,编写一个方法,实现从n-m个数中随机选出一个整数
别怪我是一个闷葫芦,没那么多花哨的语言,废话不多说,先说说小实例的要求:
编写一个方法,实现从n-m个数中随机选出一个整数,要求:传递的参数不足两个或者不是有效数字,返回[0-1]之间的随机数,需要解决n和m两个数大小问题,如果m<n,两个参数的值进行交换;
看到这个求随机数的小实例,相信很多人都会写,也写过很多相关的程序代码,所以,重要的知识点没有,旨在给初学者一些启发,大牛可略过!
既然是给初学者看的,那么我们就从最基本的东西一步一步的看,便于理解,先拆分一下要求吧:
1.求一个n-m的随机整数;
2.参数不足两个或者不是有效数字,返回[0-1]的随机数;
3.解决两个参数的大小问题。
基本上可以分为这3部分了,那我们先开始最简单的0-1的随机数(核心函数Math.random)
var num = Math.random(0,1); //0-1
既然能得到0-1之间的随机数,那能不能得到0-100之间的随机数呢,于是就有了下面的:
var num = parseInt(Math.random(0,1)*100); //0-100
这个为什么要用parseInt()(取整函数),是因为得到的随机数是带小数点的,取整就能得到0-100之间的整数,获取0-10也就很简单了,只需要改乘数就可以了
var num = parseInt(Math.random(0,1)*10); //0-10
那么,我想得到5到10之间的整数,要怎么做呢,很简单,我们可以拆分一下,5-10,最小是5,最大是10,那么让5+n,n只要在0-5之间就能满足条件,所以就是这样
var num = parseInt(Math.random(0,1)*5) + 5; //5-10
再来一个例子,实现50-100之间的整数
var num = parseInt(Math.random(0,1)*50) + 50; //50-100
从上面的几个例子可以总结一个规律,如果我们想实现n-m之间的整数,则可以写成这样
var num = parseInt(Math.random(0,1)*(m-n)) + n;
那第一个条件就满足了,第2,第3个条件无非就是判断条件了:
function randomNum(){
var arg = arguments; //获取参数集合
var num = null;
if(arg.length<2 || arg.length>2 || isNaN(arg[0]) || isNaN(arg[1])){ //当参数小于2个或者大于2个或者不为数字的时候
num = Math.random(0,1);
}else if(arg[0]>arg[1]){//如果第一个参数大于第二个参数
num = parseInt(Math.random(0,1)*(parseInt(arg[0])-parseInt(arg[1]))) + parseInt(arg[1]);
}else{ //第一个参数小于第二个参数,且为数字
num = parseInt(Math.random(0,1)*(parseInt(arg[1])-parseInt(arg[0]))) + parseInt(arg[0]);
}
return num;
}
console.log(randomNum('30','40')); //30-40
console.log(randomNum(30,40)); //30-40
细心的人可以看到好多的parseInt(),先从里面的说起吧,里面的parseInt(arg[0]),parseInt(arg[1])是为了防止当数字为字符串时,会把数字当字符串使用,就成了字符链接了,外面的parseInt()则是为了取随机整数的,明白了吗?
得到的效果就是下面的2个输出,如果不满足条件,则返回0-1之间的随机数,如果你想让参数是字符串数字也返回0-1时,只需要加一个判断,判断参数是否是字符串,是就返回0-1。
是不是很简单,对就是这么简单,今天不扩展,随机数还是有很多的大用途的,有机会写一下相关的应用!
行文仓促!有理解的不正确的或者是遗漏的东西,万望批评指正!不胜感激!
javascript小实例,编写一个方法,实现从n-m个数中随机选出一个整数的更多相关文章
- javascript小实例,多种方法实现数组去重问题
废话不多说,直接拿干货! 先说说这个实例的要求:写一个方法实现数组的去重.(要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可写,只做参考): 先 ...
- OC小实例关于init 方法不小心的错误
OC小实例关于init 方法不小心的错误 正视遇到的每一个错误 在一个遥控器类操控小车玩具的小实例项目中,我采用组合的方式,将遥控器拥有小汽车对象(has a)关系,而不是继承(is a)关系. 想 ...
- php array_rand()函数从数组中随机选择一个或多个元素
php使用array_rand()函数从数组中随机选择一个或多个元素的方法. 使用array_rand() 函数从数组中随机选出一个或多个元素,并返回. array_rand(array,numbe ...
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- javascript小实例,拖拽应用(一)
前面我们将了一下拖拽的基本思想,理论是有了,那实践呢,可以运用到什么地方呢?下面就给大家带来一个用拖拽思想写的一个小实例,供大家参考,大致效果看下图: 就是这样一个简单的一个拖拽条,你可以把它理解为滚 ...
- JavaScript 小实例 - 表单输入内容检测,对页面的增删改
JavaScript 小实例 - 表单输入内容检测,对页面的增删改 效果体验地址:https://xpwi.github.io/js/JavaScript01/jsForm.html 功能: 1.向页 ...
- JS window对象 返回下一个浏览的页面 forward()方法,加载 history 列表中的下一个 URL。
返回下一个浏览的页面 forward()方法,加载 history 列表中的下一个 URL. 如果倒退之后,再想回到倒退之前浏览的页面,则可以使用forward()方法,代码如下: window.hi ...
- JavaScript中随机打乱一个数组
JavaScript中随机打乱一个数组 function shuffle(arr) { let i = arr.length; while (i) { let j = Math.floor(Math. ...
- 在ASP.NET MVC应用程序中随机获取一个字符串
在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs ...
随机推荐
- JS入门经典第四章总结
charAt():该函数有一个参数,即选择哪一个位置上的参数.返回值就是该位置上的字符. charCodeAt():该函数有一个参数,即选择哪一个位置上的参数.返回值是该位置字符在Unicode字符集 ...
- 将表格添加到Word文档中 ,包括表格样式设置
创建 Table 对象并设置其属性 在您将表格插入文档之前,必须创建 Table 对象并设置其属性. 要设置表格的属性,请创建TableProperties对象并为其提供值. TablePropert ...
- windows mysql zip 安装
https://www.cnblogs.com/iathanasy/p/8461429.html
- 反射 XML和JSON
反射: 反射概念:在运行状态中,对于任意一个类都能知道这个类的所有方法和属性:对于任意一个对象,都能调用它的任意一个方法和属性,这种动态获取信息以及动态调用对象的方法的功能称为反射机制.java反射相 ...
- macOS终端开启TAB键自动补全功能(不区分大小写)
1.在当前用户根目录(~)下,修改~/.inputrc这个文件(如果文件不存在,则新建该文件),文件内容如下: set show-all-if-ambiguous on set completion- ...
- build.gradle
1.将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法: 在build.gradle里添加以下两句: aaptOptions.cruncherEnabled = f ...
- VSCode插件开发全攻略(七)WebView
更多文章请戳VSCode插件开发全攻略系列目录导航. 什么是Webview 大家都知道,整个VSCode编辑器就是一张大的网页,其实,我们还可以在Visual Studio Code中创建完全自定义的 ...
- 安全圈玩起了直播,"学霸”带你玩转CTF
[i春秋]安全圈玩起了直播,"学霸”带你玩转CTF 跟着学霸(汪神)打CTF,摸清CTF套路 汪神,是浙江大学电气工程系的“风云人物”,曾因首度破解特斯拉汽车安全系统而名声大噪.本套题目是自 ...
- flash中调用XML遇到的中文显示异常问题
昨天使用flash调用XML文件进行显示时,出现了中文无法显示的问题,记录一下解决方法: 1.字体设置: 一般flash里的动态文本和嵌入文本都是默认的使用Arial字体,这个字体里可能没有中文,所以 ...
- 关键字New,如阴魂不散
本文是溪源翻译的第一篇技术文章,查看原文,因时间仓促,也许翻译过程措辞不当,还请见谅. 当你使用类似于C#或VisualBasic这种强类型语言,在实例化对象时,你往往会使用New这个关键字.我敢保证 ...