
Как это уравнение дает случайные числа между max
и min
делящиеся наdivisibleBy
echo $(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min))
решение1
Подумайте об этом как о работе с шагом в divsibleBy
единицу, умноженным на целое число.
игнорируя на данный момент RANDOM, (max-min+divisbleBy)/divisibleBY
ширина диапазона будет в простых целых числах, а не (единица x целое число), поэтому (max-min+divisibleBy)
ширина в (единица x целые числа)
это %
оператор по модулю, который возвращает вам число внутри (единица измерения x целое число) ширины RANDOM
(которая будет находиться в диапазоне от 0 до 32767)
часть /divisibleBy*divisibleBy
гарантирует, что вы не получите ненулевой остаток, находясь внутри набора (единицы x целые числа)
сдвигает +min
случайное число (которое попадает в диапазон) обратно в целевой диапазон