经典的随机排列

关于Js随机排列,网上查资料后mark一下。

1、网上很多同学使用这个方法实现随机排列需求的:Array.prototype.sort-但这个方法受sort采用的排序方法的限制不能做到真正的随机分布。
function randomsort(a, b) {
    return Math.random()>0.5 ? -1 : 1;//用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}
var arr = [0,1, 2, 3, 4, 5,6,7,8,9];
arr.sort(randomsort);
2.经典的随机排列, O(n) 复杂度
function shuffle(arr){
  var len = arr.length;
  for(var i = 0; i < len - 1; i++){
    var idx = Math.floor(Math.random() * (len - i));
    var temp = arr[idx];
    arr[idx] = arr[len - i - 1];
    arr[len - i -1] = temp;
  }
  return arr;
}

在上面的算法里,我们每一次循环从前 len - i 个元素里随机一个位置,将这个元素和第 len - i 个元素进行交换,迭代直到 i = len - 1 为止。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,403评论 1 45
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 9,769评论 0 6
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 3,928评论 0 0
  • 宝贝,你又玩到了凌晨,他们说小孩子的作息沿袭大人怀孕时的,所以妈妈也只能后悔自己当时傻傻等你爸来微信,每天聊...
    我是浆糊阅读 3,089评论 0 0
  • 昨夜做了一个梦, 梦里青草盛开,繁星点点。 你坐在我身边, 我望着夜空, 就这么, 坐到了清晨。 有阳光洒下, 然...
    夏楚晨阅读 1,441评论 0 7

友情链接更多精彩内容