Como esta equação fornece números aleatórios entre dois valores?

Como esta equação fornece números aleatórios entre dois valores?

Como esta equação fornece números aleatórios entre maxe mindivisíveis pordivisibleBy

echo $(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min))

Responder1

Pense nisso como trabalhar em etapas de divsibleByunidades vezes um número inteiro.

ignorando o RANDOM por enquanto, (max-min+divisbleBy)/divisibleBYseria a largura do intervalo em números inteiros simples, em vez de (unidade x número inteiro), assim como (max-min+divisibleBy)a largura em (unidade x números inteiros)

the %é um operador de módulo para fornecer um número dentro da largura (unidade x número inteiro) de RANDOM(que estará entre 0 e 32767 em si)

a /divisibleBy*divisibleByparte garante que você não obtenha um resto diferente de zero quando estiver dentro do conjunto de (unidades x inteiros)

o +min desloca o número aleatório (que está dentro da largura) de volta para o intervalo alvo

informação relacionada