首页 > 解决方案 > 如何在满足特定标准的情况下随机化一个数组?

问题描述

我有一个元素数组。我想随机化元素的位置,但我希望在随机数组的输出中满足某些标准。

var array = [1,1,2,1,1,2,1,1,1,2];

到目前为止我所做的是使用一个函数来随机化数组的顺序。但是,我不知道如何将这些标准包含到函数中。这是我正在使用的功能:

function shuffle(array) {
    var len = array.length, temp; // While there are elements in the array
    while (ctr > 0) {
        index = Math.floor(Math.random() * len); // Pick a random index
        ctr--; // Decrease ctr by 1
        temp = array[len]; // And swap the last element with it
        array[len] = array[index];
        array[index] = temp;
    }
    return array;
};

我希望这个数组是随机的,但数组中的 2 不应该在随机化之后连续出现。我希望输出有点像这样。

var array = [2,1,1,1,2,1,1,2,1,1];

在这方面的任何帮助将不胜感激。谢谢你。

标签: javascriptarrays

解决方案


一种可能的想法:

假设您想要三个2s,请从2 1 2 1 2. 直到达到所需的长度,将一个插入1到 4 个可能的位置_ 2 1 _ 2 1 _ 2 _,随机选择。


推荐阅读