Hilfe Neuanordnung / Lösen einer Gleichung
Frage
Ich habe die folgende C-Formel
bucket = (hash - _min) * ((_capacity-1) / range());
Was muss ich die Gleichung neu zu ordnen die _capacity statt Eimer zurückzukehren (ich habe alle anderen Variablen außer _capacity). z.
96 = (926234929-805306368) * (( x -1) /1249540730)
836 = (1852139639-805306368) * ((x -1) /1249540730)
Wie Sie es ist eine ziemlich einfache Gleichung sehen kann, alles was ich brauche x auf der linken Seite. Aber meine Algebra ist sehr rostig, so dass jede Hilfe sehr geschätzt.
Lösung
capacity = (range() * bucket) / (hash - _min) + 1;
bucket = (hash - _min) * ((_capacity - 1) / range()); // start
bucket = ((hash - _min) * (_capacity - 1)) / range(); // rearrange
range() * bucket = (hash - _min) * (_capacity - 1); // multiply by range
(range() * bucket) / (hash - _min) = _capacity - 1; // divide by (hash - _min)
(range() * bucket) / (hash - _min) + 1 = _capacity; // add 1
capacity = (range() * bucket) / (hash - _min) + 1; // rearrange
Andere Tipps
_capacity = 1 + bucket / (hash - _min) * range();
mit der Maßgabe, dass hash
kann nicht mehr gleich _min
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow