
Wie ergibt diese Gleichung Zufallszahlen zwischen max
und min
teilbar durchdivisibleBy
echo $(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min))
Antwort1
Stellen Sie es sich so vor, als würde man in Schritten von divsibleBy
Einheiten mal einer ganzen Zahl arbeiten.
Wenn wir RANDOM für den Moment ignorieren, (max-min+divisbleBy)/divisibleBY
wäre die Breite des Bereichs in einfachen Ganzzahlen, statt (Einheit x Ganzzahl), also (max-min+divisibleBy)
ist die Breite in (Einheit x Ganzzahlen)
Dies %
ist ein Modulo-Operator, der Ihnen eine Zahl innerhalb der Breite (Einheit x Ganzzahl) liefert RANDOM
(die selbst zwischen 0 und 32767 liegt).
Der /divisibleBy*divisibleBy
Teil stellt sicher, dass Sie keinen Rest ungleich Null erhalten, wenn Sie sich innerhalb der Menge (Einheiten x ganze Zahlen) befinden.
das +min
verschiebt die Zufallszahl (die innerhalb der Breite liegt) wieder in den Zielbereich