Wie erzeugt diese Gleichung zufällige Zahlen zwischen zwei Werten?

Wie erzeugt diese Gleichung zufällige Zahlen zwischen zwei Werten?

Wie ergibt diese Gleichung Zufallszahlen zwischen maxund minteilbar durchdivisibleBy

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

Antwort1

Stellen Sie es sich so vor, als würde man in Schritten von divsibleByEinheiten mal einer ganzen Zahl arbeiten.

Wenn wir RANDOM für den Moment ignorieren, (max-min+divisbleBy)/divisibleBYwä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*divisibleByTeil 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

verwandte Informationen