我正在制作艺术家推荐计划,该计划将匹配显示用户已经看过的艺术家的哈希表示多少次,与显示给定艺术家已与其共享账单的艺术家的哈希相对应。匹配分数基于这些数字计算。如果用户已经看过一些艺术家x次,并且某位艺术家至少曾与该艺术家玩过一次,如下所示:
user = {"artist7" => 3, "artist8" => 1}
artist1 = {"artist6" => 7, "artist7" => 7}
match = 0
user.each do |k, v|
if artist1[k]
match += (1 - ((user[k] - artist1[k])/(user[k] + artist1[k])).abs)
end
end
我在irb中试过这个,match
的值不会改变。
答案 0 :(得分:1)
所有输入都是整数,因此ruby使用整数除法。看起来可能产生1
,而1 - 1
为零。在等式中添加一些to_f
以使用浮点除法,例如:
match += (1 - ((user[k] - artist1[k]).to_f/(user[k] + artist1[k])).abs)