Created
July 4, 2018 07:41
-
-
Save daniepetrov/8b40e3ea17c386b05791ae10e9236da1 to your computer and use it in GitHub Desktop.
Функции вспомогательные
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Функция полчения рандомного значения из интервала | |
const randomInteger = function (min, max) { | |
/*Пусть функция приняла аргументы 3 и 9, тогда | |
0.00001 * 3 <= minRandom <= 0.99999 * 3 = 0.00003 <= minRandom <= 2.99999 | |
0.00001 * 9 <= maxRandom <= 0.99999 * 9 = 0.00009 <= maxRandom <= 8.9999 | |
result = (8.99999 - 2.99999) = 6 + 3 = 9 - все ок | |
result = (0.00009 - 0.00003) = 0.00006 + 3 = 3.00006 - все ок | |
result = (8.99999 - 0.00003) = 8.99994 + 3 = 11.99994 (!) Ошибка, потому что Math.random() для обоих чисел одинаковый. | |
result = (0.00009 - 2.99999) = -2.99990 + 3 = 0.00001 (!) Ошибка, потому что Math.random() для обоих чисел одинаковый. | |
Таким образом, прибавля разница между минимальным сгенерированным числом из области Math.random() для двух чисел всегда будет одинакова | |
и если ее сложить с минимальным числом, то мы получим либо нижнюю границу интервала, либо верхнюю | |
let result = min + Math.random() * max - Math.random() * min; >>> | |
Пусть Math.random() = 0.00001, тогда | |
0.00001 * (9 - 3) = 0.00006 | |
3 + 0.00006 = 3.00006 | |
Пусть Math.random() = 0.999999, тогда | |
0.99999 * (9 - 3) = 5.99994 | |
3 + 5.99994 = 8.99994 | |
Пусть Math.random() = 0.35, тогда | |
0.35 * (9 - 3) = 2.1 | |
* */ | |
return Math.floor( min + Math.random() * (max+1 - min) ); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment