Sagen wir, wir haben 2 Zahlen.
Jede darf einen Wert zwischen 0 und 100 einnehmen.
Aber der Gesamtbetrag aus der Summe der beiden, soll gleich bleiben.
Also: A = 34 und B = 70
A+B = 104
Summe aus A+B ist "S"
A wird Random(100) und B=S-A
Damit erhält man zwei zufällige Zahlen, aber der Gesamtbetrag bleibt gleich.
Wie gestaltet man das aber nun mit drei oder mehreren Zahlen?
3 Werte?
Z=A+B+C
A=45
B=30
C=80
S=155
A ist wieder zufällig
Angenommen A wird 99
Aber wie groß sind B und C?
dann bleiben für C+B noch 56 übrig
B wird also eine Zahl zwischen 0 und 56
C ist dann die Differenz.
---------------------------------
Was aber, wenn nun A=0 ist
Dann bleiben für B+C die gesamten 155 übrig
Und man kann jetzt nicht mehr sagen, dass B einfach eine Zahl zwischen
0 und 155 ist, da B ja nur zwischen 55 und 100 sein darf.
Hier geht es auch noch. B ist einfach eine zufällig Zahl und C ist die Differenz zu 155.
----------------------------
Aber nun machen wir ein WorstCaseSenario

A=95
B=85
C=70
In der ersten Runde wird A zufällig 30
Die Differenz zwischen 250 und 30 beträgt nur 220
Selbst wenn B und C je hundert wären, würde das nicht mehr ausreichen.
Also müsste man schon hier A auf 50 in der untersten Möglichkeit eingrenzen.
Jemand eine Ahnung, wie man einen eleganten Allgorithmus findet, der diese Überprüfungen mit einer beliebigen Anzahl an Variablen (Array oder Liste) machen kann.
Vorgaben der Prozedur bräuchten nur die einzelnen Limits sein und die Gesamtsumme
Also Mache(Limit, Summe)
Und die Prozedur teilt die Summe entsprechend zufällig auf alle in der Liste oder dem Array befindlichen Variablen auf, mit der Berücksichtigung, dass das Limit nicht überschritten wird.
Das Limit könnte sein: 100, 255 (bei Farbwerten), oder jede andere Zahl.
