编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]

今天在公众号里边看到这个问题,就自己写了下,发现自己还是有许多没注意到的,在此记录,

//返回一个随机整数 function getRandom( min , max ){ var rand = Math.round( Math.random() * (max - min) + min ); return rand; }; //重复性验证 function isRepeat(arr,n){ if (arr.indexOf(n) > -1) { return true; }; return false; }; function fn(n){ var arr = [],max = 32,min = 2; //是否是数字的验证 var isNum = !isNaN(Number(n)); //是否合法验证 var randOk = (n >= 1 && n <= (max - min + 1)) ? true :false; if (isNum && randOk) { for (var i = 0; i < n; i++) { var rand = getRandom(min,max); if (isRepeat(arr,rand)) { i-- ; }else{ arr.push(rand); } } } return arr; }; console.log(fn(31))

在此过程中遇到几个问题,关于函数取整数问题  做一下整理。

1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 
2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分。 
3.Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数。

Math:数学对象,提供对数据的数学计算。
Math.random(); 返回0和1间(包括0,不包括1)的一个随机数。

Math.ceil(n); 返回大于等于n的最小整数。
用Math.ceil(Math.random()*10);时,主要获取1到10的随机整数,取0的几率极小。

Math.round(n); 返回n四舍五入后整数的值。
用Math.round(Math.random());可均衡获取0到1的随机整数。
用Math.round(Math.random()*10);时,可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。

Math.floor(n); 返回小于等于n的最大整数。
用Math.floor(Math.random()*10);时,可均衡获取0到9的随机整数。

时间: 2024-10-15 22:10:22

编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]的相关文章

编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。

首先定义个fn用来返回整数的取值范围: function getRand(a,b){ var rand = Math.ceil(Math.random()*(b-a)+a); return rand; } 再写一个func用来做去重校验: function checkArrIn(rand,array){ if(array.indexOf(rand) > -1){ return true } return false; } 最后是整体实现: function fn(n, min, max) { v

JS 函数 声明函数 函数三要素 箭头函数 回调函数

函数 可以实现一定功能的一段代码的封装. 注:函数创建过后,在内存堆中以一段字符串文本储存,不执行时不会产生任何作用,就单单是存了一段字符串. 创建函数 1.字面量(推荐) 关键字  标识符  小括号  {函数体} 例: function F65(){ console.log(`我是一个函数F65`); } 2.函数表达式(匿名函数表达式) 关键字  标识符 = function ()  {函数体} 例: let F66 = function () { console.log(`我是一个函数F6

Linux/Unix C编程之的perror函数,strerror函数,errno

#include <stdio.h> // void perror(const char *msg); #include <string.h> // char *strerror(int errnum); #include <errno.h> //errno ? errno 是错误代码,在 errno.h头文件中: perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符): strerror?是通过参数 errnum (就是errno)

jquery data方法取值与js attr取值的区别

<a data-v="3"></a> jquery data方法的运行机制: 第一次查找dom,使用attributes获取到dom节点值,并将其值存到缓存里,第二次操作的时候,还是先找到dom,但是这次取值是直接从缓存读了,少了一步对dom的操作 attr()方法每次都要操作dom,性能上差点儿 $('a').data('v')取到的值是页面初次加载的缓存值,以后如何更改,在页面上都不会改变,但缓存值会变,可以传给i/o请求使用 document.getEle

关于模板中的动态取值 ---反射与javascript脚本编译

在项目中经常遇到一个问题,打印word或者打印excel的时候,我们经常使用一对一的赋值或者批量替换的方式来对模板进行修改. 但是现在遇到两种场景: 1.取值是通过自定以方法进行取值的. 如:一个销售单据,会涉及到很多种费用,并且这些费用是由后台配置的,非常灵活.但是我们在制作打印模板时取值各项费用我们该如何去定义他呢,如何给他赋值呢?我们如果针对这一个场景下的模板进行一个特殊定义后,在打印另一份单据或者遇到同样的取值非常灵活的数据,是不是也需要进行特殊处理呢. 2.取值是通过自行定义进行取值的

无向图称为彻底图对于有向图e取值规划

一种较线性表和树更文凌乱的数据结构.线性表中.每个元素只需一个直接前驱和直接后继:树形结构中,数据元素之间只需线性联络.数据元素之间有着显着的层次联络:而在图形结构中,节点间的联络是任意的图中任意两个元素也许有关. 图是一种数据结构,加上一种根本操作,就构成了抽象数据类型.  图中的数据元素称为极点  别的还有弧弧尾弧头号根本概念,信任咱们都了解了此就不赘述了  用n标明图中的极点数目,用e标明边或弧的数目.对于无向图e取值规划是01/2n-1n有1/2n-1n条边的无向图称为彻底图对于有向图e

Map 遍历取值及jstl的取值

Map 遍历取值及jstl的取值 学习了:http://blog.csdn.net/yanjiaye520/article/details/17354239 1.Java map的便利取值 Java代码 收藏代码 Map<String,String> map = new HashMap<String,String>(); map.put("key1", "value1"); map.put("key2", "va

web(六)css的基本语法、取值与单位

css语法包含如下部分: 选择器:用于选择需要添加样式的元素. 属性(property):样式的属性名称,例如color代表颜色. 取值与单位:属性对应的值以及单位. 语法规则:css的某些固定语法. 注释:用户对css的程序描述,不执行. css的基本语法规则 忽略大小写(但在定义类选择器时识别大小写),建议使用小写. 多重声明:使用多个属性以及取值同时渲染一组标签. 1 p { 2 text-align: center; 3 color: black; 4 font-family: aria

SSH中各种形式的取值方式

现在这个项目是用SSH来开发的,遇到很多取值方式,在此总结一下,因为一直在用,很容易弄混,取值有问题: JSP通过url参数值取值: 例如:http://127.0.0.1:8080/portal/login!toAddPag.action?keyCode=1234555 通过以下语句取值: <% String keyCode=request.getParameter("keyCode"); %> 在页面中显示值:有以下两种方式: 第一: <%=keyCode  %&