Skip to content

白板:乱序算法 #1

Description

@Liyuk

描述:任意给你一个数组,请给出一个乱序算法,确保乱序后数组的概率平均。
样例:[1, 2, 3]这个数组,乱序情况有六种123,132,213,231,312,321,这六种情况的平均出现次数均为17%左右。

请实现这个乱序算法,并测试1w次后,每个乱序排列的概率相同。
提示:Fisher–Yates算法

测试代码:

// 冴羽
var times = 100000;
var res = {};

for (var i = 0; i < times; i++) {
    var arr = shuffle([1, 2, 3]);

    var key = JSON.stringify(arr);
    res[key] ? res[key]++ :  res[key] = 1;
}

// 为了方便展示,转换成百分比
for (var key in res) {
    res[key] = res[key] / times * 100 + '%'
}

console.log(res)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions