js 生成两个整数之间不重复的n个随机整数
2018-01-04 18:57
676 查看
偶遇一个js面试题:编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。 如果愿意,请先暂停阅读文章,自己动手写一下这个函数。
贴一些答案供参考学习。
甲:
贴一些答案供参考学习。
甲:
var fn=function(n){ var arr=[]; n=n&&(+n)>0?(+n).toFixed(0):0; if(n>0){ for(var i=0;i<n;i++){ var one=Math.floor(Math.random()*30+2); if(arr.indexOf(one)>-1){ one=Math.floor(Math.random()*30+2); i--; }else{ arr.push(one); } } console.log(arr); return arr; } } fn('11.11')乙:我也照着写一个,没去管n是什么了
function range(min, max) { return function (n) { var i, value, arr = []; for (i = 0 ; i < n; i++) { value = Math.floor(Math.random()*(max - min + 1) + min); if (arr.indexOf(value) < 0 ) { arr.push(value); } else { i--; } } console.log(arr); }; } var fn = range(2, 32); fn(5);丙:
function fn(n){ console.log(typeof n); //非数字 if(isNaN(n)) return []; //非小数 if(Number(n).toString().indexOf(".") != -1) return []; if(typeof n == "string") return []; //生产随机数 var arr = []; var d1=new Date().getTime(); for(var i=0;i < n;i++){ var rnd = getRand(2,32); if(arr.indexOf(rnd) != -1){ i--; }else{ arr.push(rnd); } } return arr; } function getRand(min,max){ var num = Math.floor(Math.random()*30 + 2); console.log(num); if(min < num < max) return num; } console.log(fn(5));丁:
var fn = function(n){ let arr = []; let i = 0; if(!isNaN(n)){ while(i < Math.floor(n)){ let number = Math.floor((Math.random() * (32 - 2) + 2)); if(arr.indexOf(number) < 0){ arr.push(number); i++; } } } return arr; }; console.log(fn('10.58'));
相关文章推荐
- 【Java】随机生成范围[min,max]之间的整数数组,且元素值不重复
- 随机生成0~N之间的N个不重复整数
- 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从
- 随机生成0~N之间的N个不重复整数
- js 随机获取10个不重复的1~20之间的整数数组
- js生成1-10之间的随机整数
- 生成固定范围不重复随机整数(JS&PHP)
- js生成指定范围内指定长度随机不重复的字符串数组
- 快速生成大量指定位数的不重复随机整数
- js生成指定范围内的随机整数
- 随机生成n个不重复的正整数
- 随机生成10个不重复的整数
- js生成n个和为固定sum的随机整数
- 基础算法测试——生成一个1-10之间的随机整数组合
- 随机生成不重复的整数(随机洗牌函数)
- 基础算法测试——生成一个1-10之间的随机整数组合
- 随机产生5个从0到10之间不重复的整数
- mysql关于网上流转的,生成3,6之间的随机整数
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要
- JS简单生成两个数字之间随机数的方法