var повреждения = Math.max (Math.floor (Math.random () * max) +1, мин), что означает здесь первое «Math.max» и последнее «, min» здесь - PullRequest
1 голос
/ 07 апреля 2019
var damage = Math.max(Math.floor(Math.random() * max)+1, min); 

Что означает первый Math.max и последний ,min здесь.Пожалуйста, объясните всю строку.

Ответы [ 3 ]

0 голосов
/ 07 апреля 2019

Если вы посмотрите вверх 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.

0 голосов
/ 07 апреля 2019

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))
0 голосов
/ 07 апреля 2019

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;
...