【手撕代码8】数组乱序,生成不重复的随机范围的数字

1. 数组乱序

利用sort,不好

  • 传给sort一个比较函数,如果比较函数return值小于0,则表示a必须出现在b前面,否则在b后面
function shuffle(arr){
    return arr.sort(function(){
        return Math.random() > 0.5 ? -1 : 1;
    }
}

复杂度为o(n)

  • 每一次循环从前 len - i 个元素里随机一个位置,将这个元素和第 len - i 个元素进行交换,迭代直到 i = len - 1 为止。
function shuffle(arr){
  var len=arr.length;
  for(var i=0;i

生成10个20-50之间的随机数,存在数组中

//生成10个20-50之间的随机数,存在数组中
var arr=[55];
var num=0;
while(arr.length<=10){
  var flag=true;
  num=Math.round(Math.random()*30+20);
  if(arr.length==0){
    arr.push(num);
  }else{
    for(var i=0;i

你可能感兴趣的:(【手撕代码8】数组乱序,生成不重复的随机范围的数字)