Wahrscheinlichkeitsrechung nach der Brute-Force Methode?
Hallo,
ich bin gerade dabei ein Brettspiel zu entwickeln und habe für die Berechnung der Wahrscheinlichkeiten verschiedene Tools verwendet. Zuerst anydice und dann ein selbst geschriebenes Tool von Frank Clarke.
Ich wollte jetzt mal Fragen wie die Methode heißt die Herr Clarke verwendet, denn wie er selbst auf seiner Seite erwähnt, gibt es (meines Wissens) keine Möglichkeit komplexe Spielregeln mit mathematischen Wahrscheinlichkeitsrechnungen zu berechnen. Von daher geht er einfach ein kleines Script 10000 (oder wie oft man halt möchte) durch und schaut das Ergebnis an.
Es ist natürlich nicht die schönste Methode aber sie ist für mich einfach zu verstehen und Regeln lassen sich schnell ändern und hinzufügen.
tl;dr Wie nennt sich eine Wahrscheinlichkeitsrechnung bei der einfach tausende male durchprobiert wird und gibt es Tools die das erleichtern?
2 Antworten
Ich wollte jetzt mal Fragen wie die Methode heißt die Herr Clarke verwendet.
Das wäre ein Monte-Carlo-Algorithmus
https://de.wikipedia.org/wiki/Monte-Carlo-Algorithmus
denn wie er selbst auf seiner Seite erwähnt, gibt es (meines Wissens) keine Möglichkeit komplexe Spielregeln mit mathematischen Wahrscheinlichkeitsrechnungen zu berechnen
Die Möglichkeit gibt es, das müsste beispielsweise über eine Markow-Kette möglich sein.
https://de.wikipedia.org/wiki/Markow-Kette
Die ist aber in der Regel kompliziert. Manchmal reicht es aus, einfach ganz viele zufällige Versuche zu starten und die Wahrscheinlichkeit damit anzunähern, anstatt die echte Wahrscheinlichkeit auszurechnen.
und gibt es Tools die das erleichtern?
Wie sieht's mit deinen Programmierkenntnissen aus? Vielleicht reicht schon ein halbes Python-Tutorial (oder ggf. eine andere Sprache, wenn du diese eher kannst), damit du dir selbst kleine Programme schreiben kannst, die einen Monte-Carlo-Algorithmus durchführen. So lang/kompliziert ist der Code ja nicht, wie du auf der verlinkten Website siehst.
Der Monte-Carlo-Algorithmus hört sich perfekt an. Damit komm ich schonmal etwas weiter und auf YouTube hab ich gesehen, dass es sogar möglich ist, KI damit zu erstellen. Wäre also ein ganz spannendes Nebenprojekt. Danke.
Programmierkenntnisse hab ich genügend (JavaScript, TypeScript, Python auch und noch ein paar "Enterprise" Sprachen). Den Code auf der Seite hab ich die letzten Tage verwendet um meine Berechnungen zu machen. Ich war grad nur am überlegen, ob ich nicht eine kleine Bilbiothek dafür schreib. Ich bin grad nämlich dabei eine andere Sache zusätzlich zu testen und der Code wird immer abstruser :D
Hast du doch schon selbst genannt, wie die "dumme durchprobier-Methode" genannt wird: Brute-Force
Allerdings ist das auch die ineffizienteste Methode.
Mal ein kurzes Passwort nach dieser Methode geknackt?
Für ein Zahlen-Passwort mit 4 Ziffern hast du bereits bis zu 10000(!) Schleifendurchläufe.
Wenn aber bekannt ist, dass jede Ziffer nur von 1-5 geht, und das dem Algorithmus bekannt ist, hast du nur noch 625 Durchläufe. Damit kann man leben.
Daher solltest du etwas mehr "Intelligenz" in den Algorithmus geben, so dass Schritte, die nicht vorkommen können, nicht in Betracht gezogen werden.
Das ist kein Brute-Force. Wenn wir bei deinem Beispiel bleiben - der Fragesteller möchte nicht wissen, wie genau ein Passwort lautet, sondern z.B. wie wahrscheinlich es ist, dass ein Passwort im Bereich zwischen "123" und "abcd" liegt. Bei einer Menge von möglichen Passwörtern, die nach beliebigen Regeln generiert worden ist.