我的需求
在 0 - 3 之间(包含0与3)生成 2 个不重复的随机数。
我的方案
我没有使用do while的方案来做...
function randomNumbers($range){ return $range[0] + Math.round(Math.random() * ($range[1] - $range[0])); } // 生成随机数字 function generatedRandomNumbers($length,$range){ var _randomNumber = randomNumbers($range), _array = []; for(var i = 0;i < $length;i++){ if(~_array.indexOf(_randomNumber)){ _randomNumber = randomNumbers($range); } _array[i] = _randomNumber; } console.log(JSON.stringify(_array)); };
欧阳克2016-11-11 15:37:09
function randomNum(min, max) { return min + Math.round(Math.random() * (max - min)); } function random2() { var rdm1 = randomNum(0, 3); var rdm2 = randomNum(0, 3); if(rdm1 === rdm2) { return random2(); } return [rdm1, rdm2]; }
欧阳克2016-11-11 15:36:49
昨天也看到了一个类似的问题,处理的不是很好,但是可以得到结果。
var x, y, arr=[]; for(x=0; x<4; x++) { for(y=0; y<4; y++) { if(x!=y) { var num = x == 0 ? ((x*10).toString() + y) : x*10 + y; arr.push(num); } } } console.log(arr.length, arr);