Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

21.03.2015, 15:24

Magic Number beim hash_combine

Hallo! Nach langer Suche und nicht zufriedenstellenden Antworten möchte ich hier mal nachfragen.
Mich interessiert sehr stark, warum im hash_combine von Boost die Zahl 0x9e3779b9 vorkommt.
(Boost: seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);)
Es ließ sich recht leicht herausfinden, dass 2^32 / phi = 0x9e3779b9, die binary expansion des Goldenen Schnitts, ist. Es sei so, dass jedes Bit mit "gleicher Wahrscheinlichkeit" 0 oder 1 ist aber ohne Muster oder so was. Klar, eine irrationale Zahl wirkt wie pures Chaos. Doch warum gerade §\phi§ und nicht zum Beispiel §\pi§? Ich finde die Antwort, dass das sich einfach so ergeben hat, irgendwie unbefriedigend. Da muss doch ein gewisser, theoretischer Hintergrund sein, dass es gerade §\frac{1+\sqrt{5}}{2}§ sein muss! Oder ist das echt total egal und einfach nur so "common practice"?

MfG
Check

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

21.03.2015, 16:03

Ich denke, dass es in der Tat egal ist, welche irrationale Zahl man nimmt. Der Autor hat sich vielleicht gedacht, dass Phi ein Schattendasein führt und es darum bevorzugt. Vielleicht hat er auch mehere Zahlen probiert und Tests durchgeführt, bei denen Phi gewonnen hat (wenn, dann war es wahrscheinlich Zufall).