Pense nisso como trabalhando em etapas de divsibleBy
unidades vezes um número inteiro.
ignorando o RANDOM no momento, (max-min+divisbleBy)/divisibleBY
seria a largura do intervalo em inteiros simples, em vez de (unit x integer), então (max-min+divisibleBy)
é a largura em (unit x inteiros)
o %
é um operador de módulo para fornecer um número dentro da largura (unit x integer) de RANDOM
(que estará entre 0 e 32767)
a parte /divisibleBy*divisibleBy
garante que você não está recebendo um resto diferente de zero quando dentro do conjunto de (unidades x inteiros)
o +min
muda o número aleatório (que está dentro da largura) de volta para o intervalo de destino