Невероятно, сколько раз вам придется использовать Math.random () (из всех методов математики, которые отправляют вне коробки с JavaScript).
Если вы творческий кодер, вам понадобится его, чтобы сделать созданное искусство (даже если многие из инструментов творческого кодирования корабля их собственного аромата Trusty Math.random ()). В результате, это, вероятно, отличная идея разума о том, как работает Math.random ().
На его самом основании Math.random () предназначен для того, чтобы сделать только одно: генерировать число от 0 до 1. Мне нравится думать об этом как о белой машине шума, создавая белые и черные пиксели для заполнения целого экрана. Эта аналогия мощна, когда вы считаете, что машины белого шума попадают в создание мозаики и даже полученные процедурные облака, среди прочего.
Другими словами, Math.random () обманчиво просты:
0≤ n <1 //What Math.random generates
Math.random () генерирует число от нуля и один, но никогда (или редко когда-либо) генерирует сам о себе.
Расширение math.random ()
Если мы думаем о 0≤n <1 В качестве алгоритма для процессуального поколения случайных плавающих цифр мы можем затем генерировать числа, не ограничиваемые 0 и один. Нам нужно только уменьшить скелет нашего желаемого диапазона до базового формата.
Скажем, вы хотите создать число от 5 до 15. Это умственная последовательность, которую вы будете следовать:
- Мне нужно число от 5 до 15.
- Это можно представить математически, как 5≤n <16 (вы можете догадаться, почему мы пишем 16, а не 15?)
- Но Math.random () может думать только в 1S и 0s. Так как договориться о договоренности?
- Сначала вычитайте пять из каждой части этой математической модели вычисления.
- Это дает нам
5-5≤n-5 <16-5… - … что это
0≤n-5 <11 - Хорошо. Таким образом, у нас есть ноль на одном конце. Но нам нужен 1, а не 11, на другом конце!
- О, я знаю! Давайте разделим все на 11!
0/11≤ (N-5)/11 <11/11- Это
0≤ (N-5)/11 <1 - Ура!
- Но мы не сделали:(
- Вы видите,
(N-5)/11это р. То есть случайное числоMath.random ()будет генерировать. То, что мы хотим получить это фактор, мы умножим R, чтобы получить цифры в диапазоне, который мы хотим (в этом случае 5-15). Для этого мы должны найтиn. r = ( N-5)/11- Умножьте обе стороны на 11
N-5 * 11- Добавить пять в обе стороны
- n = (r * 11) + 5 Давайте возьмем это для спина, будем ли мы? Давайте напишем функцию под названием
FivetofifteenОтказ
И это работает!
Но что, если вы хотите изменить число из пяти до пятнадцати, скажем, 8 и 19? Будете ли вы сделать это 18 шаговых рассуждений, которые мы сделали ранее?
Милосердно нет. Вместо того, чтобы думать в чистых числах (5 и 15), мы можем думать с точки зрения мин и Макс Отказ
0 is min, 1 is max.
Таким образом, мы можем начать с этой основной идеи вместо этого: Мин ≤n
min-min≤n-min, что дает нам 0≤n-min- Разделите через (Max-min), и мы получаем:
- 0/(max-min) ≤n-min/(max-min) <(max-min)/(max-min)
- 0≤n-min/(max-min) <1
Ага.
Затем мы можем запустить r = (n-min)/max-min
- Умножьте обе стороны по
(Макс-мин)и мы получаемR * -min. - Добавить мин r * (max-min) +
Затем мы можем переписать нашу функцию, чтобы адаптироваться к любому произведенному порабощению какого-либо случайного количества поезда.
function anyRandomNumber(min, max){
let r = Math.random();
r*=(max-min);
r+=min;
console.log(Math.floor(r))
}
anyRandomNumber(69,87)
Благодаря математике Scrimba для разработчиков Frontend за то, чтобы помочь мне понять это, и я надеюсь, что это полезная умственная модель для вас! Это было изначально опубликовано в моем блоге
Оригинал: “https://dev.to/vunderkind/understanding-math-random-in-javascript-3f4”