这个方程如何给出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
随机数(落在宽度内)移回目标范围