Çok ilginç soru!
Cevabı yazarken bunu anlamaya çalışıyorum :) İlk önce onunla oynamanın kolay bir yolu: http://www.wolframalpha.com/input/?i=plot%28+mod%28+sin%28x*12.9898 +% 2B + y * 78.233% 29 + * + 43758.5453% 2C1% 29x% 3D0..2% 2C + y% 3D0..2% 29
O zaman burada ne yapmaya çalıştığımızı düşünelim: İki giriş koordinatı x, y için bir "rastgele sayı" döndürürüz. Şimdi bu rastgele bir sayı değil. Aynı x, y'yi her girdiğimizde aynıdır. Bu bir hash işlevi!
Fonksiyonun yaptığı ilk şey 2d'den 1d'ye gitmektir. Bu kendi başına ilginç değil, ancak sayılar tipik olarak tekrarlamayacak şekilde seçildi. Ayrıca orada bir kayan nokta eklememiz var. Y veya x'ten birkaç bit daha olacaktır, ancak sayılar doğru seçilebilir, böylece bir karışım yapar.
Sonra bir kara kutu sin () işlevini örnekliyoruz. Bu, uygulamaya büyük ölçüde bağlı olacaktır!
Son olarak, kesiri çarpıp alarak sin () uygulamasındaki hatayı güçlendirir.
Genel durumda bunun iyi bir hash fonksiyonu olduğunu düşünmüyorum. Sin (), sayısal olarak GPU'da bir kara kutudur. Hemen hemen her hash işlevini alıp dönüştürerek çok daha iyi bir tane oluşturmak mümkün olmalıdır. İşin zor kısmı, cpu hashinginde kullanılan tipik tamsayı işlemini float (yarım veya 32bit) veya sabit nokta işlemlerine dönüştürmektir, ancak bu mümkün olmalıdır.
Yine, bunun bir hash fonksiyonu olarak gerçek problemi, sin () 'in bir kara kutu olmasıdır.