質問です

p self.hash
p 1.hash
p 2.hash
p 3.hash

>293116833
>798648688
>-231762622
>-1014935460

こうやるとハッシュ値が見れるんですけど
ハッシュ値はどのようにして決まっているんですか?

また、ハッシュ値から割り当てられたオブジェクトを辿る方法ってありますか?