Помогите переставить / решить уравнение - PullRequest
2 голосов
/ 19 февраля 2010

У меня есть следующая формула C

bucket = (hash - _min) * ((_capacity-1) / range());

Что мне нужно, чтобы изменить уравнение так, чтобы оно возвращало _capacity вместо bucket (у меня есть все другие переменные, кроме _capacity). например,

96 = (926234929-805306368) * (( x -1) /1249540730)
836 = (1852139639-805306368) * ((x -1) /1249540730)

Как видите, это довольно простое уравнение, все, что мне нужно, это x слева. Но моя алгебра очень ржавая, поэтому любая помощь приветствуется.

Ответы [ 2 ]

8 голосов
/ 19 февраля 2010
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
2 голосов
/ 19 февраля 2010
_capacity = 1 + bucket / (hash - _min) * range();

с условием, что hash больше не может равняться _min.

...