我有一个由3行9列(所以每列有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]
等等。
任何意见赞赏。随意火焰我为我的逻辑:)
我欣赏这个例子的结构和解释。谢谢 :) – backdesk 2012-01-06 11:49:49