Open babysodme opened 7 years ago
结果:不成立啦~原因是数字根本不可以当作数组直接操作;
你对数组没研究透。
var numbers = [1, 2, 3];
这个numbers你完全可以随机选出其中一个数字插入到某个位置。比如,选择2插入到游标1的前面。
思路: 把相同的2个数 作为1个数 那么所谓的四个数 就是三位数 因为没要求顺序 所以不要自作多情搞出个 有顺序 且 有两个数相同的 四位数
var codeList = [];
for (var i = 0; i < 3 ; i++) {
codeList.push(getRandomIntInclusive(0,9));
}
rondomIndex = getRandomIntInclusive(0,2);
insertValue = codeList[rondomIndex];
codeList.splice(rondomIndex,0,insertValue);
console.log(codeList);
/**
*生成随机数的函数
*获取 min max 之间 的随机整数
*/
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive
}
我还是蛮喜欢编程的,题目也有趣!
不同的思路,代表的是不同的代码。
思路:随机生成2个数字一样的4位验证码,关键就是连续且相同的数字。
我是从流程方面来思考的,模拟出如何创造出这个数组的思路。
var indenityData = []; // 要生成的验证码的数组
var radom_index = parseInt(Math.random()*3); // 随机生成一个0~3以内的整数,在哪一次,我们要重复一次。
for (var i = 0; i < 3; i++) { var x = parseInt(Math.random()*10); // 随机生成0~10以内的整数,要把x加入到数组里。 if (i === radom_index) { indenityData.push(x) ; indenityData.push(x); // 在这里,要重复一次。 }else { indenityData.push(x); // 其他情况,就是直接加入x就行。 } }
console.log了一下,都是符合条件的^^~
## 另一个想法
其实,我还有另一个方法,比如:1233,1337。两位同学都是把它们看成了一个数组的4位元素,我把它看成是3个元素,即:1233和1337在一个数组里面是这样的:```[1,2,33],[1,33,7]```。
这样的话,还是一样的流程,但在某一次,要添加x的时候,添加的是xx,x要变成xx。
```javascript
for (var i = 0; i < 3; i++) {
var x = parseInt(Math.random()*10); // 随机生成0~10以内的整数,要把x加入到数组里。
if (i === radom_index) {
indenityData.push(x.toString() + x.toString() ) ; // 在这里,x要变成xx,但是要考虑到00出现的情况,所以这里用的是字符串。
}else {
indenityData.push(x); // 其他情况,就是直接加入x就行。
}
}
@WangZhong2014 思路都很好。
如何随机生成包含两位连续相同数字的四位验证码思路整理?
最初思路:随机生成三个数字——通过操作数组游标使用concat()方法在操作游标后面加一个相同的值创建并返回一个新数组。