- Registriert
- 15 Januar 2002
- Beiträge
- 5.937
- Punkte Reaktionen
- 0
Tag zusammen.
Vorwort:
Wie ich bereits im ersten Thread angedeutet habe, gab es vor wenigen Wochen eine sehr interessante Diskussion über einige technische Grundlagen bezüglich der Generierung von Items und deren Speicherung.
Wer den Thread im Original lesen möchte, kann dies hier tun. (Update: Der Thread wurde bereits vor geraumer Zeit gelöscht.) Für all jene, deren Englischkenntnisse vielleicht nicht ganz so gut sind, habe ich mich mal hingesetzt und eine (tlw. kommentierte) Übersetzung bzw. Zusammenfassung angefertigt.
Vorgeschichte:
Die Übersetzung des ersten Teils der Diskussion habe ich bereits vor ein paar Tagen angefertigt, ihr findet ihn hier. Die Lektüre der dort erfolgten Erklärungen ist zum Verständnis dieses Threads vielleicht nicht zwingend erforderlich, aber doch sehr ratsam.
Wer sind die Protagonisten:
Es folgt in dem besagten Thread nach den einleitenden Erläuterungen im ersten Teil von Ruvanal zunächst eine längere Zusammenstellung an Gedanken von Jarulf. Abschließend folgt nochmal ein ergänzender Kommentar von Ruvanal.
Beide gehören zu den Koryphäen der diabolischen Code-Exegese und haben schon unzählige Male aufklärende Studien über verschiedenste technische Sachverhalte geführt und die Ergebnisse ersterer dann der breiten (und oftmals unwissenden ^^) Öffentlichkeit präsentiert.
Anlass:
Aufhänger für die späteren Erklärungen ist der folgende Beitrag des Users NervousTwitch.
Er bezieht sich auf die Aussage von Ruvanal, dass bei einer Range von über 18 Quintillion verschiedenen möglichen Zufallszahlen eine Kollision von zwei identischen Quellenwerten sehr unwahrscheinlich ist.
Hier der Beitrag:
------------------------------------------------------------------------------------
Originally posted by NervousTwitch:
1.) Die Algorithmen zur Generierung von Zufallszahlen unterliegen einem inneren Widerspruch. Es ist unmöglich, eine absolut zufällige Zahl mit einem System vorgegebener Regeln zu bestimmen. In der Praxis sieht man nämlich, dass ein Großteil der angeblich möglichen Nummern beim Anwenden des Algorithmusses niemals ausgewählt würden, so dass die Liste der "möglichen" Zahlen in Wirklichkeit viel kleiner ist als du beschreibst.
2.) Wenn die Quellenwerte dazu verwendet werden, Informationen über jedes Item zu speichern, so wie du es sagst, dann sollte das Programm dazu in der Lage sein, die Eigenschaften des Gegenstandes einzig und allein aus der Nummer, die das Item erhielt, zu bestimmen.
Wenn du aber in der Lage bist, Informationen in diesen Nummern zu speichern, um dieses Informationen später wieder herausziehen zu können, dann kann man diese Nummer ja schlecht "Zufallszahl" nennen. Eine Zahl, die schlicht und ergreifend nur als ID-Nummer fungiert, hat eine weitaus größere "Freiheit" bei der zufälligen Generierung als eine Zahl, die Daten enthalten soll.
Warum ist das so wichtig? Nun, die Tatsache, dass die Zahl Informationen enthalten soll, limitiert die Anzahl der möglichen Zufallszahlen in deinem Algorithmus erneut. Man kann die Anzahl der möglichen Kombinationen mit Hilfe einiger Manipulationstechniken zwar nochmal erhöhen, allerdings nur in begrenztem Ausmaß.
Fazit: Die Chance, dass zwei Items mit identischen IDs erstellt werden, ist viel höher. Und deshalb ist das Scannen nach Dupes auch weitaus schwieriger, weil das Risiko, dabei versehentlich legit Items ebenfalls zu löschen, steigt.
Es gibt aber eine Lösung für dieses ganze Problem: Bezeichnet die IDs nicht als Zufallszahlen, das sind sie nicht (und sollten sie womöglich auch nie sein).
Originally posted by NervousTwitch.
------------------------------------------------------------------------------------
Daraufhin folgt eine persönliche Theorie, wie Blizzard das Ganze eventuell ganz anders gelöst hat. Das basiert aber alles nur auf Vermutungen und ist auch falsch, wie sich später herausstellt. Ich verzichte deshalb an dieser Stelle auf die Übersetzung.
Kleiner Zusatz zum Problem der Generierung von Zufallszahlen dann noch im nächsten Post vom User shadowfist:
------------------------------------------------------------------------------------
Originally posted by shadowfist:
Die Wahrscheinlichkeit zwei identische Nummern zu generieren, ist weitaus größer als man denkt.
Beispiel Geburtstagsphänomen:
Wie viele Personen braucht man, um garantieren zu können, dass mindestens zwei von ihnen am selben Tag Geburtstag haben? Antwort: 367.
Wie viele Personen braucht man, um eine 50-prozentige Chance zu haben, dass zwei von ihnen am selben Tag Geburtstag haben? Die genaue Zahl weiß ich nicht mehr, aber es war irgendwas zwischen 20 und 30.
Ja, die Dimensionen in Diablo2 sind weitaus größer, aber das Prinzip ist das gleiche.
Originally posted by shadowfist.
------------------------------------------------------------------------------------
Das also waren die zur Diskussion gestellten Thesen. Es folgt nun eine (ausführliche!) Darstellung der beiden Experten, viel Spaß beim Lesen.
Vorwort:
Wie ich bereits im ersten Thread angedeutet habe, gab es vor wenigen Wochen eine sehr interessante Diskussion über einige technische Grundlagen bezüglich der Generierung von Items und deren Speicherung.
Wer den Thread im Original lesen möchte, kann dies hier tun. (Update: Der Thread wurde bereits vor geraumer Zeit gelöscht.) Für all jene, deren Englischkenntnisse vielleicht nicht ganz so gut sind, habe ich mich mal hingesetzt und eine (tlw. kommentierte) Übersetzung bzw. Zusammenfassung angefertigt.
Vorgeschichte:
Die Übersetzung des ersten Teils der Diskussion habe ich bereits vor ein paar Tagen angefertigt, ihr findet ihn hier. Die Lektüre der dort erfolgten Erklärungen ist zum Verständnis dieses Threads vielleicht nicht zwingend erforderlich, aber doch sehr ratsam.
Wer sind die Protagonisten:
Es folgt in dem besagten Thread nach den einleitenden Erläuterungen im ersten Teil von Ruvanal zunächst eine längere Zusammenstellung an Gedanken von Jarulf. Abschließend folgt nochmal ein ergänzender Kommentar von Ruvanal.
Beide gehören zu den Koryphäen der diabolischen Code-Exegese und haben schon unzählige Male aufklärende Studien über verschiedenste technische Sachverhalte geführt und die Ergebnisse ersterer dann der breiten (und oftmals unwissenden ^^) Öffentlichkeit präsentiert.
Anlass:
Aufhänger für die späteren Erklärungen ist der folgende Beitrag des Users NervousTwitch.
Er bezieht sich auf die Aussage von Ruvanal, dass bei einer Range von über 18 Quintillion verschiedenen möglichen Zufallszahlen eine Kollision von zwei identischen Quellenwerten sehr unwahrscheinlich ist.
Hier der Beitrag:
------------------------------------------------------------------------------------
Originally posted by NervousTwitch:
1.) Die Algorithmen zur Generierung von Zufallszahlen unterliegen einem inneren Widerspruch. Es ist unmöglich, eine absolut zufällige Zahl mit einem System vorgegebener Regeln zu bestimmen. In der Praxis sieht man nämlich, dass ein Großteil der angeblich möglichen Nummern beim Anwenden des Algorithmusses niemals ausgewählt würden, so dass die Liste der "möglichen" Zahlen in Wirklichkeit viel kleiner ist als du beschreibst.
2.) Wenn die Quellenwerte dazu verwendet werden, Informationen über jedes Item zu speichern, so wie du es sagst, dann sollte das Programm dazu in der Lage sein, die Eigenschaften des Gegenstandes einzig und allein aus der Nummer, die das Item erhielt, zu bestimmen.
Wenn du aber in der Lage bist, Informationen in diesen Nummern zu speichern, um dieses Informationen später wieder herausziehen zu können, dann kann man diese Nummer ja schlecht "Zufallszahl" nennen. Eine Zahl, die schlicht und ergreifend nur als ID-Nummer fungiert, hat eine weitaus größere "Freiheit" bei der zufälligen Generierung als eine Zahl, die Daten enthalten soll.
Warum ist das so wichtig? Nun, die Tatsache, dass die Zahl Informationen enthalten soll, limitiert die Anzahl der möglichen Zufallszahlen in deinem Algorithmus erneut. Man kann die Anzahl der möglichen Kombinationen mit Hilfe einiger Manipulationstechniken zwar nochmal erhöhen, allerdings nur in begrenztem Ausmaß.
Fazit: Die Chance, dass zwei Items mit identischen IDs erstellt werden, ist viel höher. Und deshalb ist das Scannen nach Dupes auch weitaus schwieriger, weil das Risiko, dabei versehentlich legit Items ebenfalls zu löschen, steigt.
Es gibt aber eine Lösung für dieses ganze Problem: Bezeichnet die IDs nicht als Zufallszahlen, das sind sie nicht (und sollten sie womöglich auch nie sein).
Originally posted by NervousTwitch.
------------------------------------------------------------------------------------
Daraufhin folgt eine persönliche Theorie, wie Blizzard das Ganze eventuell ganz anders gelöst hat. Das basiert aber alles nur auf Vermutungen und ist auch falsch, wie sich später herausstellt. Ich verzichte deshalb an dieser Stelle auf die Übersetzung.
Kleiner Zusatz zum Problem der Generierung von Zufallszahlen dann noch im nächsten Post vom User shadowfist:
------------------------------------------------------------------------------------
Originally posted by shadowfist:
Die Wahrscheinlichkeit zwei identische Nummern zu generieren, ist weitaus größer als man denkt.
Beispiel Geburtstagsphänomen:
Wie viele Personen braucht man, um garantieren zu können, dass mindestens zwei von ihnen am selben Tag Geburtstag haben? Antwort: 367.
Wie viele Personen braucht man, um eine 50-prozentige Chance zu haben, dass zwei von ihnen am selben Tag Geburtstag haben? Die genaue Zahl weiß ich nicht mehr, aber es war irgendwas zwischen 20 und 30.
Ja, die Dimensionen in Diablo2 sind weitaus größer, aber das Prinzip ist das gleiche.
Originally posted by shadowfist.
------------------------------------------------------------------------------------
Das also waren die zur Diskussion gestellten Thesen. Es folgt nun eine (ausführliche!) Darstellung der beiden Experten, viel Spaß beim Lesen.