Так по-прежнему в переменнуюlet randomIndex = Math.floor(Math.random() * alphabet.length);
randomIndex
записывается случайный индекс. Один раз.const getRandomIndex = () => Math.floor(Math.random() * alphabet.length);
А вот функция, которая при каждом вызове getRandomIndex()
будет возвращать новый случайный индекс. sqrt( 0.299*R^2 + 0.587*G^2 + 0.114*B^2 )
Это никогда не будет точным значением, но для задачи подойдёт.for (let i = 0; ...
перебирает, условно, горизонтали (строки).for (let k = 0; ...
составляет очередную строку из клеточек, перебирает 8 клеток.s
, которая бывает или 1 или 0, означает цвет очередной клетки, и на каждой клетке меняет своё значение.0 1 0
1 0 1
0 1 0
размотать:
0 1 0 1 0 1 0 1 0
Как видно, клетки меняют свой цвет всегда, в том числе при переходе к следующей строке. запись1 - 3.377852191807931e-49 * 0.1 * 1 = 1.0
3.3e-49
означает 3.3 умножить на 10 в –49-й степени. Т.е. какое-то очень малое число.0.(50 нулей)33
>>> 0.1 + 0.2
0.30000000000000004
4e-16
. А уж числа порядка 1e-50
тем более пропадут и будут считаться за ноль. SELECT text, title
FROM news
WHERE `date` = DATE_SUB('2020-07-21', INTERVAL 3 DAY)
SELECT text, title
FROM news
WHERE `date` = DATE( DATE_SUB( NOW(), INTERVAL 3 DAY))