我正在尝试创建一个包含3到18个6个数字的数组变量,生成我们为D& D第5版生成能力分数的方式。 对于那些不熟悉游戏的人来说,概念是滚动6个死亡,并将3个最高结果加起来,以获得3到18之间的能力分数。
我的问题是,即使它应该有3到18之间的范围,它有时会得到0分,而且似乎从未真正高于14 ... 另外,如果我尝试做一个do / while循环直到结果高于17,只是为了检查是否可能,我得到一些24分甚至34分...实际上,我做错了什么?我尝试了很多东西,但它仍然不起作用......如果有人能帮助我,我会非常感激!
这是我目前的代码:
map <what you want to use> :action IntroduceVariable<CR>
答案 0 :(得分:0)
你可以像这样完成你的目标:
function sumOfThreeDice() {
rolls = [0, 0, 0, 0, 0, 0].map((x) => Math.ceil(Math.random() * 6));
rolls.sort();
sum = rolls[5] + rolls[4] + rolls[3];
return sum;
}
console.log(sumOfThreeDice());
&#13;
我们掷6个骰子,然后通过对数组进行排序来加起来最大的3个。如果您想多次填充数组,可以这样做:
[0, 0, 0, 0, 0, 0].map(sumOfThreeDice); // generates 6 D&D ability scores
答案 1 :(得分:0)
从先前的评论:
let rolls = [];
let min = 1;
let max = 6;
let numrolls = 6;
for ( let i = 0; i < numrolls; i++ ) {
// Probably put this in a util function
rolls.push ( Math.floor ( Math.random () * ( max - min + 1 ) ) + min );
}
rolls = rolls.sort ( ( a, b ) => { return a < b; } );
let result = rolls
.splice ( 0, 3 )
.reduce ( ( a, b ) => { return a + b; } );
console.log ( result );