javascript - 如何在满足特定标准的情况下随机化一个数组?
问题描述
我有一个元素数组。我想随机化元素的位置,但我希望在随机数组的输出中满足某些标准。
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];
在这方面的任何帮助将不胜感激。谢谢你。
解决方案
一种可能的想法:
假设您想要三个2
s,请从2 1 2 1 2
. 直到达到所需的长度,将一个插入1
到 4 个可能的位置_ 2 1 _ 2 1 _ 2 _
,随机选择。
推荐阅读
- c - 让客户端等到其余客户端写入服务器
- flutter - 覆盖 ChangeNotifier 中的 dispose 方法
- javascript - 在控制器中处理 javascript 动态生成的控件
- javascript - 在 epub 中使用 JavaScript 在单击按钮时显示元素并记住其在以下页面上的值
- kotlin - 编织服务器找不到corda jar文件
- http - 通过原始 TCP 套接字接受和路由 http 请求
- html - 包装
到固定宽度,使得每一行的字符长度相同
- c# - 如何浸泡测试硒脚本
- mysql - 如何按出生日期搜索 SQL 记录?
- python - 使用相邻行计算 Pandas Dataframe 中的列而不遍历每一行