Как преобразовать вывод хеша md5 в число с плавающей точкой от 0 до 1 - PullRequest
0 голосов
/ 09 мая 2018

В A / B-тестировании довольно распространено разделение по модулю артеметики, но это часто приводит к перекрывающимся экспериментам, т. Е. Если вы использовали id% 2 == 0 в качестве критерия разделения, один набор пользователей будет постоянно попадать в контроль или эксперимент.

Решение, о котором я слышал, заключается в использовании хеширования. Я хочу объединить user_id с именем эксперимента, хэшировать его, а затем преобразовать его в число с плавающей запятой между 0 и 1. Я знаю, как сделать хеширование (Digest::MD5::hexdigest('test').to_i(16)), но я не совсем понимаю следующие шаги для преобразование в число с плавающей точкой от 0 до 1.

Какие шаги?

1 Ответ

0 голосов
/ 09 мая 2018

Я нашел решение, портировав код, который указан здесь: http://blog.richardweiss.org/2016/12/25/hash-splits.html

test_id_digest = Digest::MD5::hexdigest(user_id + experiment_name)
test_id_first_digits = test_id_digest[0..5]
test_id_final_int = test_id_final_int = test_id_first_digits.to_i(16)

ab_split = test_id_final_int.to_f/0xFFFFFF

Основная идея - создать дайджест, затем взять первые шесть букв, а затем разделить на шестнадцатеричную строку с самой большой шестизначной цифрой.

Сообщение в блоге, на которое делается ссылка, проверяет случайность этого решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...