美文网首页程序员
经典的随机排列

经典的随机排列

作者: 爱吃萝卜的小草菇 | 来源:发表于2019-03-27 18:39 被阅读3次

关于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 为止。

相关文章

  • 经典的随机排列

    关于Js随机排列,网上查资料后mark一下。 1、网上很多同学使用这个方法实现随机排列需求的:Array.prot...

  • JS中随机排列数组顺序(经典洗牌算法)和数组的排序方法

    经典洗牌算法 洗牌算法是一个经典的算法,其核心就是让一个数组的值随机排列,重点在于“随机”和“程序效率”。网上一直...

  • shuffledArray随机排列

    返回使用指定的随机源以随机顺序列出此数组的元素的新数组 导入 #import GameplayKit/Gamepl...

  • DataFrame随机排列

    假设已有名为cities的dataframe格式变量

  • 数组随机排列

    es6 方法 es5 方法

  • 聚散

    随机选择着相聚, 排列组合着分离.

  • 高效随机排列算法

    上班途中心血来潮想出来的一种高效随机排列算法,利用随机数加权然后排序,是不是很简单?附上JavaScript代码

  • Android 自定组件(安全键盘)

    常见的安全键盘,随机排列数字,点击状态的回调。

  • 数学|思维模型

    1、复利 2、代数等价 3、排列组合 4、随机性 5、随机过程 6、Multiplying by Zero (乘以...

  • 2019-03-07

    随机过程以确定函数为样本的随机实验的结果沿时间轴排列的无数随机变量 随机过程的数学期望是一个确定的时间函数 任何一...

网友评论

    本文标题:经典的随机排列

    本文链接:https://www.haomeiwen.com/subject/kfizvqtx.html