Kommt noch in Mathe bei dir.^^
Kluger Kopf gesucht! Das neue Clone Id System.
-
- Veraltet
-
P4sca1 -
15. März 2018 um 23:23
-
-
Kommt noch in Mathe bei dir.^^
Ich bin froh, dass ich verstanden hab was eine Funktion und eine Steigung ist, das haben wir grad in der Schule xD
Aber bei einer Sinusfunktion hört es schon wieder auf... xD
-
Ein solcher Zufall ohne Datenspeicherung, bei dem jede ID unterschiedlich ist, ist unmöglich.* Eine Restwahrscheinlichkeit bleibt immer vorhanden. Also gilt es meiner Meinung nach entweder: a) die Wahrscheinlichkeit so niedrig wie möglich zu halten, oder b) einen pseudozufälligen Algorithmus zu entwickeln, der halt einfach eine gewisse Gesetzmässigkeit befolgt, die aber kaum auffällt, bzw. schwer zu beobachten ist. Sprich, dass mit jeder Charakterkreation theoretisch die Zahl errechenbar ist.
Für a) könnte man sich folgendes überlegen:
Je mehr IDs gemacht werden, desto grösser wird die Wahrscheinlichkeit für eine Überschneidung. Es gibt 999'999 Möglichkeiten für die IDs ohne Berücksichtigung der 000'000. Das heisst, beim ersten Typen, der sich eine ID macht ist die Wahrscheinlichkeit für eine Überschneidung ja 0 / 999'999. Beim zweiten dann 1 / 999'999. Somit ist die Wahrscheinlichkeit bei einem Optimalen Algorithmus für eine Überschneidung (x - 1) / 999'999 wobei x die Anzahl an Charakteren darstellt. Das heisst folglich: Je mehr Leute joinen, desto höher die Wahrscheinlichkeit einer Überschneidung. Ausserdem ist diese Wahrscheinlichkeit da oben nicht so klein. Ergo: Ansatz a) scheint der Falsche Ansatz zu sein. Meiner Meinung nach sind demnach alle Ansätze mit Wahrscheinlichkeit nicht wirklich sinnvoll.
Somit bleibt Option b) die einzige, die wirklich praktikabel ist und eine Wahrscheinlichkeit einer Überschneidung gleich 0 setzt. D.h. die Aufgabe kann man wie folgt umschreiben:
Schreibt einen Algorithmus, welcher bei einem zufälligen Punkt startet, und von da an gewisse Operationen durchführt, die gewährleisten, dass
a) es schwierig ist, den Algorithmus rauszufinden
b) einen genügend grossen Abstand zwischen den IDs ermöglicht, aber gleichzeitig sich nicht allzu schnell wiederholt (Wiederholung ist zwangsläufig da)
c) keine Zahl zwei Mal errechnet
d) die Zahl 999'999 nicht überschritten wird.
Die erste Art eines solchen Algorithmus' ist es natürlich immer +1 zu rechnen. Aber es gibt auch andere Wege. Beispielsweise mit +3: Jeder Char bekommt eine Zahl die der vom vorherigen Char entspricht +3. Wenn die Zahl dann 999'999 überschreitet, sprich 1'000'002 ist, rechnet man immer Modulo 1'000'000 Mit diesem Algorithmus wäre bspw. schon die Einzigartigkeit gewährleistet. Es gibt viel mehr Möglichkeiten, daher kann man da sehr kreativ werden.
Das scheint mir jetzt eher eine mathematische Knobelei als eine wirklich programmiertechnische. Ich werde wahrscheinlich noch über einen möglichen Algorithmus nachdenken, aber ich wollt das alles mal so geschrieben haben, damit sich die Leute den Zufall aus dem Kopf schlagen können (ausser beim Einstiegspunkt).
LG ~Oly
P.S:
*Warum so ein Zufall unmöglich ist:
Stellen wir uns das Problem doch ganz einfach bei einstelligen Zahlen vor: Da haben wir die Ziffern 0 bis 9. Nun lassen wir zufällig 9 Ziffern rausnehmen. Eine bleibt. Sagen wir mal die 2. Nun muss es möglich sein, die Zahl 2 mit jeder der von 0 bis 9 zufällig generierten Ziffern zu errechnen ohne der Kenntnis aller anderen vorherigen Ergebnisse. Auch könnte rein mathematisch das Endergebnis alle Zahlen sein, da wir keine Zahl zwischen 0 und 9 ausschliessen können, bzw. keine Information haben über die vorherigen Zahlen. Somit ist ein solcher Algorithmus gar nicht erst möglich.
Dieser Beweis ist mir eingefallen, als ich mit Elias geredet habe. Ich hab ihm die Aufgabenstellung erklärt, halt nur mit einer Ziffer. Aber danach ist es mir eingefallen. Danke für die "Inspiration" Elias (4) xD
Falsch, weil wir wollen keine ID zufällig generieren.
Wir wollen lediglich die Zahlen 1 - 999.999 auf eine andere Zahl in dem Bereich umverteilen.
-
Wie wärs wenn wir einfach jede ID hoch 1.2 (oder was anderes) nimmt das führt dazu, dass die IDs in immer größeren Abständen entstehen.
Nun nimmt man immer die ersten 6 Nachkommastellen als ID.
Die Wahrscheinlichkeit auf 2 gleiche IDs liegt bei ... okay keine Ahnung ... auf jeden Fall sehr unwahrscheinlich.
Die Lösung ist recht einfach und glaube ich einfacher zu programmiren als diesen kommischen Sinus-Kramm, den ich schon in Mathe nicht ganz begriffen hab.
-
Und wie willst du eine ID mit dem Exponenten 1,2 berechnen, wenn wir zunächst keine ID haben?
Wir wollen ja mithilfe einer Rechnung die ID erst generieren.
-
Und wie willst du eine ID mit dem Exponenten 1,2 berechnen, wenn wir zunächst keine ID haben?
Wir wollen ja mithilfe einer Rechnung die ID erst generieren.
Naja er geht vermutlich von der Standardnummerierung aus,
also Klon 1 = 1^1.2
Klon 2 =2^1.2
Klon 3= 3^1.2
[...]
und dann die ersten 6 Nachkommastellen, wenn ich das richtig verstanden habe
-
Und wie willst du eine ID mit dem Exponenten 1,2 berechnen, wenn wir zunächst keine ID haben?
Wir wollen ja mithilfe einer Rechnung die ID erst generieren.
die IDs in Reihenfolge zu erstellen ist ja schon möglich die sollen nur irgendwie neu gemischt werden
-
Warum machen wir es nicht so das hinten die id
00-0000
++ ++++
03 0952
So soltte es klappen und alle haben eine bunte id und wenn es am Ende angekommen ist , fängt es rechnet man das drauf also auf die letzte Zahl zb.
ID = 98-9931 + 03-0952 und das was über 99-9999 ist wird dann die neue Start id
-
Warum machen wir es nicht so das hinten die id
00-0000
++ ++++
03 0952
So soltte es klappen und alle haben eine bunte id und wenn es am Ende angekommen ist , fängt es rechnet man das drauf also auf die letzte Zahl zb.
ID = 98-9931 + 03-0952 und das was über 99-9999 ist wird dann die neue Start id
Falls du es nicht mitbekommen hast. Aber wir haben bereit ein funktionierendes System.
-
Falls du es nicht mitbekommen hast. Aber wir haben bereit ein funktionierendes System.
oh xD
-
Nein haben wir nicht. Das aktuelle System ist kacke xD Das ist nur ne Notlösung. Nachfolgende ID's sind immernoch leicht zu erkennen
-
Nein haben wir nicht. Das aktuelle System ist kacke xD Das ist nur ne Notlösung. Nachfolgende ID's sind immernoch leicht zu erkennen
war immer +10 xD
-
Wieso noch wieder aufs alte System umsteigen? Die freie Wahl war mir schon immer lieber.
-
Wieso noch wieder aufs alte System umsteigen? Die freie Wahl war mir schon immer lieber.
weil es Code technisch schlecht bis gar nicht umsetzbar ist zu überprüfen ob diese bereits vergeben ist
-
Wieso noch wieder aufs alte System umsteigen? Die freie Wahl war mir schon immer lieber.
Weil man das System für die ID abfrage nicht mehr hat soweit ich das jetzt verstanden habe oder nicht mehr benutzen will.
-
weil es Code technisch schlecht bis gar nicht umsetzbar ist zu überprüfen ob diese bereits vergeben ist
zudem habe ich manchmal 5 Minuten an einem Char gesessenen weil die id alle vergeben waren -.-
-
Der Grund, warum wir keine Freie Wahl haben, ist dass das System bei jeder Charaktervalidierung checken muss, ob die ID belegt ist, was zu diesen langen Joinzeiten in Charaktere geführt hat. Bei erhöhter Charakteranzahl wird das nur schlimmer.
-
Der Grund, warum wir keine Freie Wahl haben, ist dass das System bei jeder Charaktervalidierung checken muss, ob die ID belegt ist, was zu diesen langen Joinzeiten in Charaktere geführt hat. Bei erhöhter Charakteranzahl wird das nur schlimmer.
Wie wäre es mit einer Löschung von Inaktiven Chars die 6 Monate nicht On waren. Da gibt's bestimmt einige.
-
Wie wäre es mit einer Löschung von Inaktiven Chars die 6 Monate nicht On waren. Da gibt's bestimmt einige.
fänd ich nich so gut ehrlich gesagt, wenn man mal lange Pause hat und wieder kommen will ist alles futsch.
-
fänd ich nich so gut ehrlich gesagt, wenn man mal lange Pause hat und wieder kommen will ist alles futsch.
Das ist falsch , weil dein List etc. Noch da ist nur der Char nicht bzw. Du verlierst nur da lvl welches du dir mit einem Screen wiederholen kannst.
-