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