gpt4 book ai didi

javascript - 自调整随机列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:47 24 4
gpt4 key购买 nike

我有一个 9 列乘 3 行的网格(因此每列有 3 个槽)。每列中至少有一个插槽必须被标记,并且最多可以标记 3 个。标记由 1、2 或 3 位数字表示。

总共必须始终有 15 个标记的插槽。为此,我尝试了以下方法:

var valueLeft = 15;
while (valueLeft > 0)
{
var ranValue = utils.getRandomInt(1,3);
console.log('slots remaining: ' + (valueLeft - ranValue));
if (ranValue >= valueLeft)
{
ranValue = valueLeft;
}
valueList.push(ranValue);
valueLeft -= ranValue;
}
console.log(valueList);

但这通常会给我一个内部元素少于 9 的数字数组。我可以看出我的逻辑有缺陷,但我正在竭尽全力想弄清楚如何让它始终给出一组 9 个元素,所有元素加起来都是 15。

例如,我可能最终得到的是:[2, 1, 1, 1, 1, 2, 3, 1, 2, 1]

例如当我需要的是:[2, 2, 1, 1, 1, 1, 3, 2, 2]或者[2, 2, 1, 2, 1, 1, 3, 2, 1]

等等。

任何建议表示赞赏。随意抨击我糟糕的逻辑:)

最佳答案

这个答案显示了与许多已经发布的答案类似的方法,但我觉得它们好像太复杂了。它可以非常简单:

function pad(list, size) {
var total = list.length;
while (total != size) {
var i = utils.getRandomInt(0, 8);
if (list[i] < 3) {
list[i]++;
total++;
}
}
return list;
}

var valueList = pad(new Array(1,1,1,1,1,1,1,1,1), 15);

你不需要很多案例。就像许多其他人已经说过的那样——用 1 初始化数组。然后,简单地将 1 加到随机元素(其值已经不是 3)直到总数为 15。

关于javascript - 自调整随机列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com