2010-02-18 12 views
2

я следующую формулу CПомощь перестановки/решения уравнения

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

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

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

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

+0

Напишите формулу на листе бумаги и решите ее для x, затем запустите программирование. –

+1

Проделайте то же самое с обеих сторон ... –

+0

Разве нет сайта stackexchange, посвященного математике? Мы должны поставить ссылку здесь. –

ответ

8
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 
+0

Ты меня ниндзя. – Nicole

+0

Thats great, Thanks –

+0

У меня есть воспоминания о моем классе старой алгебры. –

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

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

+0

true .. но даже в первом случае вы получили бы только 0 ответ в ответ .. но это лучше, чем ошибка DIVIDE_ZERO. – ShoeLace

+0

Если 'hash' равно' _min', тогда в первом eq 'bucket' также будет 0 . Это сделало бы это уравнение 0/0. Что заставляет меня задаться вопросом ... почему компьютеры не достаточно умны, чтобы понять, что 0/0 не ошибка, это всего лишь 0? Любое уравнение, действующее в одной форме, должно быть действительным в любой другой форме, если эта форма действительно равна. – Nicole

+0

@ Регенерация, потому что когда-то 0/0 = 1. Серьезно. http://www.codeproject.com/KB/recipes/float_point.aspx (3-й абзац после «Беспокойства о добавлении и вычитании больше, чем умножения и разделения» для нетерпеливого) – mctylr

Смежные вопросы