var damage = Math.max(Math.floor(Math.random() * max)+1, min);
首先Math.max
和最后,min
在这里是什么意思。请解释整行。
Math.max
是一个函数,当传递可变数量的数字时,返回最大数字:
console.log(Math.max(1, 2, 3));
你的代码中的min
是damage
可以达到的最小数量 - 因此它可以作为(伪代码):
set damage to the maximum number out of:
A random number between 0 and 1, multiplied by max, rounded down,
or min;
Math是javascript中的一个构建对象,具有方法和属性,这里[Math.max][2]
用于查找最大的数字。 Math.floor和Math.random也是可用的方法
为了便于理解,我将代码分解为多行
function findMax(max, min) {
let findRandom = Math.random() * max; // generate a random number
// if it is a decimal number get the previous whole number
let findLower = Math.floor(findRandom);
// add one with the generated whole number
let addOne = findLower + 1;
// find the maximum between two numbers, one is generated & another is
// supplied as argument
let damage = Math.max(addOne, min)
return damage;
}
console.log(findMax(4, 1))
如果你在Math.random
查找MDN:
Math.random()函数返回0-1范围内的浮点伪随机数(包括0,但不包括1),在该范围内具有近似均匀的分布 - 然后您可以将其缩放到所需范围。
所以在这里,范围是max
,你正在采取表达Math.floor
的Math.random() * max
,然后加1。
Math.floor
会将生成的数字四舍五入到小于或等于给定结果的最大整数。因此,如果Math.random() * max
结果说5.95
,Math.floor
将产生5
。
然后在最后我们找到上一步的结果数和min
变量的最大值,并将结果分配给damage
变量。