1775540
是这样,早上的一个面试题,题目是:随机取100个数,范围1~100,不可重复(即1,2,3,4,5,6,...,98,99,100,不能用递增方法)。 我的现场答案是: var array = []; var i = 0; var randomNumber; while ( i < 100 ) { randomNumber = Math.ceil(Math.random()*100);//1-100随机整数 if(array.indexOf(randomNumber) === -1) { array.push(randomNumber); i++; }
} 但是面试官说一个问题,100个数中,有可能其中一个数一直随机不到,是不是会陷入死循环,再接着放大范围,比如取1000个数,范围1~1000,不可重复,以此类推1万个数等等,是不是更容易无限死循环一直随机不到某些数,我觉得他说的有道理,现场我没有想出更好的解决办法,但是直到现在我也没有想到,是不是我思路就不对?有什么更好的解决办法吗?