Jump to content

Python, die verpasste Chance?


Recommended Posts

Am 16.9.2018 um 17:40 schrieb Egoist:

 

Hallo Albert,

 

Das ist fast wie bei Excel, denn dort richtet sich auch alles nach der breitesten Zelle.

Was halt nicht geht, ist spaltenübergreifend Zellen zu vereinen.

Wenn Du sowas willst, schaue Dir doch mal den "pack"-Manager an.

 

https://www.python-kurs.eu/tkinter_layout_management.php

 

Die Seite ist von meiner Kiste mit Chrome nicht erreichbar.

 

Am 16.9.2018 um 17:40 schrieb Egoist:

 

Sorry, aber das sind keine Macken, das hast Du so bestellt  :P, wenn Du mit Gridlayout arbeitest.

 

Gibt es andere Layout-Optionen, die man wählen kann?

 

Am 16.9.2018 um 17:40 schrieb Egoist:

 

Ich finde es sehr schade, dass Du lieber Deine eigene (inkompatible) Moduldatei benutzen willst, ich musste deshalb alles zurückändern, ehe es lief.

Deine Klasse "Coup" habe ich vorläufig an meine angehängt.

 

Es ist kein Problem, zu Deiner roulib01.py zurückzukehren.

Meine Klasse "Coup" habe nur übungshalber gemacht. So mager, wie sie bisher angelegt ist, braucht man sie nicht.

Mir ist klar, dass man sich die EC's zu jeder Zeit aus Deiner Klasse "Roulette-franz()" holen kann, wenn man eine Plein am Wickel hat.

 

Am 16.9.2018 um 17:40 schrieb Egoist:

 

Wenn schon klar ist, dass Du den Gridmanager nicht nach Deinen Wünschen brauchen kannst,

schau doch auch mal nach pyQT, da gibt es einen graphischen Designer, mit dem Du Deine Widgets einfach zusammenklicken kannst.

 

Unter Anaconda ist  eine "qtconsole" verfügbar. Im zugehörigen Helpfile gibt es keinen Hinweis auf eine GUI mit variablen Widgets.

 

Am 16.9.2018 um 17:40 schrieb Egoist:

 

Aua,  wie wäre es, wenn Du einen Prototypen Deines Gui in VBA machen würdest?

So ein fertiges Fenster könnte man dann doch immer noch in Python übersetzen.

 

Danke, dass Du diese Vorgehensweise akzeptierst. Wenn es soweit ist, wirst Du sicher bei der Umsetzung in Python helfen.

 

Gruß von Albert

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb Dr. Manque:

 

Die Seite ist von meiner Kiste mit Chrome nicht erreichbar.

 

Hallo Albert,

das finde ich aber sehr merkwürdig.

Auf meinen Rechnern habe ich immer Firefox und zusätzlich gern auch noch Opera und evtl Chrome.

Das mache ich vor allem deshalb, weil Firefox bei mir richtig abgedichtet ist und alle s_cripte immer händisch erlaubt werden müssen.

Will ich mal freier surfen oder Filme gucken, oder Passwörter speichern, benutze ich Opera, welches sonst nicht läuft.

 

Zitat

Gibt es andere Layout-Optionen, die man wählen kann?

 

Deine Bücher scheinen nicht sehr viel in der Richtung herzugeben und ja!

Ich hatte schon den PACK-Manager erwähnt, ausserdem gibt es etwas, was sich PLACE schimpft.

Bisher war ich nicht mit tkinter unterwegs.

 

Zitat

Unter Anaconda ist  eine "qtconsole" verfügbar. Im zugehörigen Helpfile gibt es keinen Hinweis auf eine GUI mit variablen Widgets.

 

Das Netz quillt über von Tutorials, einfach mal was nettes suchen.

Kurzes look & feel vom Informatikprofessor

https://www.youtube.com/watch?v=XBurh2nBR6c

 

oder eine kleine Serie vom  Amateur:

https://www.youtube.com/watch?v=FiaPzdWKhJU

 

oder, oder ...

 

Zitat

Danke, dass Du diese Vorgehensweise akzeptierst. Wenn es soweit ist, wirst Du sicher bei der Umsetzung in Python helfen.

 

Kein Problem, Du musst eigentlich nur alles mit dem QtDesigner zusammenklicken.

Aber es ist sicherlich auch denkbar einen VBA-Code automatisch nach Python zu übersetzen.

 

 

Gruss vom Ego

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 19.9.2018 um 01:04 schrieb Egoist:

 

Hallo Albert,

das finde ich aber sehr merkwürdig.

Auf meinen Rechnern habe ich immer Firefox und zusätzlich gern auch noch Opera und evtl Chrome.

Das mache ich vor allem deshalb, weil Firefox bei mir richtig abgedichtet ist und alle s_cripte immer händisch erlaubt werden müssen.

Will ich mal freier surfen oder Filme gucken, oder Passwörter speichern, benutze ich Opera, welches sonst nicht läuft.

 

 

Deine Bücher scheinen nicht sehr viel in der Richtung herzugeben und ja!

Ich hatte schon den PACK-Manager erwähnt, ausserdem gibt es etwas, was sich PLACE schimpft.

Bisher war ich nicht mit tkinter unterwegs.

 

 

Das Netz quillt über von Tutorials, einfach mal was nettes suchen.

Kurzes look & feel vom Informatikprofessor

https://www.youtube.com/watch?v=XBurh2nBR6c

 

oder eine kleine Serie vom  Amateur:

https://www.youtube.com/watch?v=FiaPzdWKhJU

 

oder, oder ...

 

 

Kein Problem, Du musst eigentlich nur alles mit dem QtDesigner zusammenklicken.

Aber es ist sicherlich auch denkbar einen VBA-Code automatisch nach Python zu übersetzen.

 

 

Gruss vom Ego

 

Hallo Ego,

 

Ich habe ca. 5 Stdn. für ca. 7 Versuche gebraucht, mit einem mittellangen Postings zu antworten.

Es kam immer die Meldung "Forbidden".

Was tun?

 

Albert

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 19.9.2018 um 01:04 schrieb Egoist:

 

Hallo Albert,

das finde ich aber sehr merkwürdig.

Auf meinen Rechnern habe ich immer Firefox und zusätzlich gern auch noch Opera und evtl Chrome.

Das mache ich vor allem deshalb, weil Firefox bei mir richtig abgedichtet ist und alle s_cripte immer händisch erlaubt werden müssen.

Will ich mal freier surfen oder Filme gucken, oder Passwörter speichern, benutze ich Opera, welches sonst nicht läuft.

 

 

Deine Bücher scheinen nicht sehr viel in der Richtung herzugeben und ja!

Ich hatte schon den PACK-Manager erwähnt, ausserdem gibt es etwas, was sich PLACE schimpft.

Bisher war ich nicht mit tkinter unterwegs.

 

 

Das Netz quillt über von Tutorials, einfach mal was nettes suchen.

Kurzes look & feel vom Informatikprofessor

https://www.youtube.com/watch?v=XBurh2nBR6c

 

oder eine kleine Serie vom  Amateur:

https://www.youtube.com/watch?v=FiaPzdWKhJU

 

oder, oder ...

 

 

Kein Problem, Du musst eigentlich nur alles mit dem QtDesigner zusammenklicken.

Aber es ist sicherlich auch denkbar einen VBA-Code automatisch nach Python zu übersetzen.

 

 

Gruss vom Ego

Hallo Ego, 

 

Ich versuche jetzt, nur den Text meines Antwort-Postings loszuwerden:

Das hat Gott sei Dank geklappt!

Im "Bearbeiten"-Modus gebe ich nun das Bild dazu.

 

Qt ist wirklich ein Lichtstreifen am Horizont!

Damit können wir anfangen.

Wenn Du schon eine Übung mit dem Qt-Designer durch hast, stelle den Code doch bitte hier ein.

 

Die Frage ist nun, welches System nehmen wir uns zuerst vor?

Mein Gedanke war ja, dass wir vor dem Deep Learning Python-übungshalber ein einfaches Lernsystem programmieren sollten.

Als Vorlage wollte ich ein "Novice-analoges" EC-System in Excel-VBA erstellen. Du hast das so akzeptiert.

Das Programm habe ich in 15 Programmierstunden fertig gemacht. Es hat aber mit dem Novice-Verfahren nichts zu tun.

(Man könnte es leicht auf die Novice-Wechsel-Auswertungen umstellen, wenn Novice die mal verständlich erklären würde.)

 

Statt Novices EC-Wechsel verwende ich Deine EC-Summencodierung.

Wenn S/G/M mit -1 und R/U/P mit +1 codiert sind, liefert deren Summe über eine bestimmte Teilstrecke eine Zahl, die eine grobe Tendenz anzeigt. 

Ist die EC-Summe negativ, dann hat auf dieser Teilstrecke S/G/M dominiert. 

Ist die EC-Summe positiv, dann hat auf dieser Teilstrecke R/U/P dominiert.

 

Mein Programm heisst "EC-SummenTendenz-Learn".

Ich werde es in einem eigenen Thread beschreiben.

Es scheint ähnlich gut zu funktionieren wie mein "ECS-Figuren-Learn" 

https://www.roulette-forum.de/topic/18361-lernfähige-roulettesysteme-ecs-figuren-learn-feldzug/?page=2

 

Grundlage von "EC-SummenTendenz-Learn" sind 3 (Lern-)Matrizen - für jedes EC-Paar eine Matrix.

Die Perms werden in Teilstrecken ("CpSegmente") gegittert durchlaufen. Die Längen der CpSegmente sind variabel einstellbar.

Als Höchstlänge habe ich 15 festgelegt.

Jedes Segment liefert mittels der EC-Summen einen Zahlencode, der zwischen -15 und +15 variiert, wenn die Segmentlänge auf 15 eingestellt ist.

Ist die Segmentlänge auf 1 eingestellt, dann variieren die EC-Summen zwischen -1 und +1.

Mit den EC-Summen-Codes werden die Zeilen und Spalten der Matrizen addressiert.

 

Zuerst werden in der Lernphase pro Perm die Zähler der Vorgänger-Nachfolger-Segmente in den Matrizen gesammelt.

In der anschließenden Kannphase wird für das letzte Segment - das aus der Lernphase ausgeklammert war - die EC-Summe ermittelt.

Sie liefert die Einstiegszeile für die Matrizen. Die Zähler in den Matrizenspalten liefern dann die Information, ob in der Perm-Vergangenheit

dieses Segments die Minus- (S/G/M) oder Plusseite (R/U/P) dominiert hat.

 

Wie bereits erwähnt, sind die Ergebnisse dieses Verfahrens ermutigent.

Es hat aber den Nachteil, dass auf der Bedieneroberfläche 3 Märsche á 4 Spalten benötigt werden.

Dazu kommen noch 4 Spalten für einen Selektionsmarsch.

 

Der Trefferverlauf für einen Marsch sieht so aus:

 

M1-Treffer-Verlauf.gif.0310b4402bca3fa65c3b6d2e591c3b0c.gif

 

 

Ich muss "EC-SummenTendenz-Learn" auf einen Marsch einkürzen.

Dann könnte es eine brauchbare Vorlage für ein Python-Übungsprogramm sein.

---------------------------------------------------------------------------------------------------------------------------------

Am 19.9.2018 um 01:04 schrieb Egoist:

Aber es ist sicherlich auch denkbar einen VBA-Code automatisch nach Python zu übersetzen.

 

Gruss vom Ego

--------------------------------------------------------------------------------------------------------------------------------

 Codekonvertierungen IBM-Assembler --> PL/1 und C++ --> Java habe ich schon mal gemacht.

Das lohnt sich erst, wenn >= 50 Programme zur Konvertierung anstehen.

Wir haben vorerst noch "from Scratch" zu lernen.

 

Gruß!

Albert

bearbeitet von Dr. Manque
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb Dr. Manque:

Hallo Ego, 

 

Hallo Albert.

 

schön von Dir zu lesen.

 

vor 13 Stunden schrieb Dr. Manque:

Ich versuche jetzt, nur den Text meines Antwort-Postings loszuwerden:

Das hat Gott sei Dank geklappt!

Im "Bearbeiten"-Modus gebe ich nun das Bild dazu.

 

Bedauerlich, dass der forbidden Error bei Dir immer noch besteht, ich hatte lange nichts mehr darüber gesehen und hoffe nun auch selbst nicht mehr betroffen zu werden.

 

vor 13 Stunden schrieb Dr. Manque:

Qt ist wirklich ein Lichtstreifen am Horizont!

Damit können wir anfangen.

Wenn Du schon eine Übung mit dem Qt-Designer durch hast, stelle den Code doch bitte hier ein.

 

Der QtDesigner ist bestimmt was für Dich, allerdings habe ich nicht damit experimentiert, denn mir fehlt noch jedes Gefühl für Benutzereingaben.

Ausser einem Pfad zu den Testzahlen, benötige ich noch keinen weiteren Input.

 

vor 13 Stunden schrieb Dr. Manque:

Die Frage ist nun, welches System nehmen wir uns zuerst vor?

Mein Gedanke war ja, dass wir vor dem Deep Learning Python-übungshalber ein einfaches Lernsystem programmieren sollten.

 

Wenn ich eine Idee hätte, wie ich da vorgehen soll, könnte ich vielleicht dazu eine Meinung haben.

 

vor 13 Stunden schrieb Dr. Manque:

Als Vorlage wollte ich ein "Novice-analoges" EC-System in Excel-VBA erstellen. Du hast das so akzeptiert.

 

Ja klar, das kannst Du gerne machen. Immerhin kann ich Novices Chartansatz halbwegs nachvollziehen.

 

vor 13 Stunden schrieb Dr. Manque:

Das Programm habe ich in 15 Programmierstunden fertig gemacht. Es hat aber mit dem Novice-Verfahren nichts zu tun.

(Man könnte es leicht auf die Novice-Wechsel-Auswertungen umstellen, wenn Novice die mal verständlich erklären würde.)

 

Wenn es 15 Stunden Coding waren, muss es schon eine Menge Code sein.

Bei mir ist das Coding noch sehr in der Minderzahl, die meiste Zeit geht für Lerninhalte drauf und wird dann durch pures Nachdenken ausgeweitet.

 

vor 13 Stunden schrieb Dr. Manque:

Statt Novices EC-Wechsel verwende ich Deine EC-Summencodierung.

Wenn S/G/M mit -1 und R/U/P mit +1 codiert sind, liefert deren Summe über eine bestimmte Teilstrecke eine Zahl, die eine grobe Tendenz anzeigt.

 

Wenn Du die roulib01.py benutzt hast, ist P=-1 und M=+1, sonst passt das.

 

vor 13 Stunden schrieb Dr. Manque:

Ist die EC-Summe negativ, dann hat auf dieser Teilstrecke S/G/M dominiert. 

Ist die EC-Summe positiv, dann hat auf dieser Teilstrecke R/U/P dominiert.

 

Da habe ich Probleme, denn es ist nicht gesagt, dass SGH(P) in einem Zusammenhang stehen, oder RUT(M).

Die einzelnen EC-Klassen sind vielmehr vollkommen unabhängige Grössen.

 

vor 13 Stunden schrieb Dr. Manque:

Mein Programm heisst "EC-SummenTendenz-Learn".

Ich werde es in einem eigenen Thread beschreiben.

Es scheint ähnlich gut zu funktionieren wie mein "ECS-Figuren-Learn" 

https://www.roulette-forum.de/topic/18361-lernfähige-roulettesysteme-ecs-figuren-learn-feldzug/?page=2

 

Grundlage von "EC-SummenTendenz-Learn" sind 3 (Lern-)Matrizen - für jedes EC-Paar eine Matrix.

Die Perms werden in Teilstrecken ("CpSegmente") gegittert durchlaufen. Die Längen der CpSegmente sind variabel einstellbar.

Als Höchstlänge habe ich 15 festgelegt.

 

Entweder bin ich beim Überfliegen nicht an den wichtigen Stellen hängen geblieben, oder Du hattest das Wichtigste Deiner Theorie nicht explizit genug herausgemeisselt.

Wie geht das mit der Lernmatrix?

 

vor 13 Stunden schrieb Dr. Manque:

Jedes Segment liefert mittels der EC-Summen einen Zahlencode, der zwischen -15 und +15 variiert, wenn die Segmentlänge auf 15 eingestellt ist.

Ist die Segmentlänge auf 1 eingestellt, dann variieren die EC-Summen zwischen -1 und +1.

Mit den EC-Summen-Codes werden die Zeilen und Spalten der Matrizen addressiert.

 

Um mit 3 EC-Klassen in 15 Coups gleichzeitig auf +-15 zu kommen, musst Du schon durch 3 teilen, sonst geht das mit +-1 schon in 5 Coups.

Aber wie gesagt, ich schnalle nicht warum eine rote Zahl die Wirkung einer geraden Zahl egalisieren sollte, wohingegen eine ungerade ihre Wirkung verstärken könnte.

 

vor 13 Stunden schrieb Dr. Manque:

Zuerst werden in der Lernphase pro Perm die Zähler der Vorgänger-Nachfolger-Segmente in den Matrizen gesammelt.

 

Bitte mal Deinen VBA-Code, so komme ich noch nicht dahinter.

 

vor 13 Stunden schrieb Dr. Manque:

In der anschließenden Kannphase wird für das letzte Segment - das aus der Lernphase ausgeklammert war - die EC-Summe ermittelt.

Sie liefert die Einstiegszeile für die Matrizen. Die Zähler in den Matrizenspalten liefern dann die Information, ob in der Perm-Vergangenheit

dieses Segments die Minus- (S/G/M) oder Plusseite (R/U/P) dominiert hat.

 

Meinst Du damit den ersten Coup ausserhalb der Lernphase?

Also wäre das einerseits eine Prognose, die auf dem gelernten beruht und andererseits eine darauf folgende Ziehung, die diese bestätigt, oder negiert?

 

vor 13 Stunden schrieb Dr. Manque:

Wie bereits erwähnt, sind die Ergebnisse dieses Verfahrens ermutigent.

Es hat aber den Nachteil, dass auf der Bedieneroberfläche 3 Märsche á 4 Spalten benötigt werden.

 

Deine Ergebnistabellen sehen tatsächlich sehr grün aus, daher würde ich dazu raten, sie im Gleichsatz auszuwerten.

Ausserdem scheinst Du die Benutzeroberfläche mit dem Display der Ergebnisse gleichzusetzen, kommt wohl vom Excel.

Niemand würde Ausgabezellen nachträglich verändern wollen, obwohl das in Excel noch ginge, daher ist das keine Bedienoberfläche imho.

 

vor 13 Stunden schrieb Dr. Manque:

Dazu kommen noch 4 Spalten für einen Selektionsmarsch.

 

Da wird es bei mir dunkelschwarz, denn ich habe keine Ahnung, welche Algorithmen den steuern.

 

vor 13 Stunden schrieb Dr. Manque:

Der Trefferverlauf für einen Marsch sieht so aus:

 

M1-Treffer-Verlauf.gif.0310b4402bca3fa65c3b6d2e591c3b0c.gif

 

 

Ich muss "EC-SummenTendenz-Learn" auf einen Marsch einkürzen.

Dann könnte es eine brauchbare Vorlage für ein Python-Übungsprogramm sein.

 

Nur was ich im Detail verstanden habe, kann ich programmieren.

 

vor 13 Stunden schrieb Dr. Manque:

---------------------------------------------------------------------------------------------------------------------------------

Am 19.9.2018 um 01:04 schrieb Egoist:

Aber es ist sicherlich auch denkbar einen VBA-Code automatisch nach Python zu übersetzen.

 

Gruss vom Ego

--------------------------------------------------------------------------------------------------------------------------------

 Codekonvertierungen IBM-Assembler --> PL/1 und C++ --> Java habe ich schon mal gemacht.

Das lohnt sich erst, wenn >= 50 Programme zur Konvertierung anstehen.

 

Coole Sache, allerdings kenne ich das so:

Alles was mehr als 1x vorkommt, sollte man programmieren ;)

 

vor 13 Stunden schrieb Dr. Manque:

Wir haben vorerst noch "from Scratch" zu lernen.

 

Und davon reichlich, ich hoffe es kommt etwas dabei heraus.

 

 

Gruss vom Ego,

der sich gedanklich viel mit LSTM beschäftigt.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur mal so hier festgehalten:

 

Um mit Neuronetzen zu arbeiten, benötigt es eines normalisierten Inputs.

Das heisst, die Eingabedaten sollten im Bereich von 0...1 liegen.

 

In der Library roulib gehen die Daten aber über ein weiteres Spektrum.

Ob -1...+1 auch ginge, habe ich noch nicht herausgefunden.

Das wären die Daten aus den EC-Tabellen.

 

Also müsste man einzelne EC gesondert betrachten und ihr Ergebnis prozentual festhalten.

Beispiel:

EC- Rot trifft im 1. Coup, das Ergebnis für Rot ist 100%, das für Schwarz ist 0%

Zero trifft im 2. Coup, das Ergebnis für Rot ist 50+25%, wenn es Zeroteilung gibt.

Damit liegt Rot immer noch über der Erwartung (48,65%), Schwarz aber krass darunter.

 

Die meisten würden nun behaupten, der Prozentsatz von Schwarz ist jetzt 0%,

das stimmt aber nicht.

Durch die Zero ergab sich ein Kapitalrückfluss in Höhe des halben Einsatzes (eventuell nur imaginär wg en prison).

Das ist etwas anderes, als eine Niete und zählt einen Vierteltreffer.

 

Das Verhältnis ist nach den 2 Coups 100:0 plus 25:25

Nun müsste man noch die Gegenchance wegkürzen, also die 100% roten Treffer aus Coup#1 entsprechend verdünnen.

1,25 Treffer auf Rot in 2 Coups stehen nun 0,25 Treffer auf Schwarz gegenüber.

 

Also teilen wir das durch die 2 Coups:

Rot: 1,25/2 = 62,5%

Schwarz: 0,25/2 = 12,5%

Macht für Zero: 100%-12,5%-62,5% = 25%

 

 

Das ist alles nur mal sehr roh hier festgehalten.

Durch den Einfluss der Zero verwischen sich die Kontraste etwas.

 

 

Lustiger wird es, wenn man zB die "Augenzahl" einer Plein mit der selben aus der vorherigen Ziehung addiert.

Nun haben wir eine Variationsgrösse von 0...72 in 2 Coups, aber schon einen Buckel bei ca 36 "Augen".

Addiert man sogar 3 Coups bildet sich sogar langsam eine Gaussglocke ab.

Wenn das mal kein lohnenswertes Forschungsgebiet ist...

 

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 24.9.2018 um 13:24 schrieb Dr. Manque:

(Man könnte es leicht auf die Novice-Wechsel-Auswertungen umstellen, wenn Novice die mal verständlich erklären würde.) 

 

 

Hmmm, noch verständlicher????? Strecke *70/100 > 15*70/100 = Bei Rücklauf Spiel 11, setz ich das Gegenteil!

 

:sheep:   ich hab`s gern simpel

bearbeitet von novice
Link zu diesem Kommentar
Auf anderen Seiten teilen

binärer Entscheidungsbsaum

 

Hallo Programmierer, 

 

wollte einmal ein kleines Übungsprogramm erstellen und stolperte schon bei der Programmierlogik. Hat wer schon einen binären Entscheidungsbaum programmiert? Dr. Google zeigt viele Treffer an, doch verwirrte mich mehr... 

 

Hatte früher folgende Problemstellung einfachst mit Endlosschleife gelöst, und versuche mich derzeit an einer eleganteren und korrekten Lösung. Ja ich weiß, Rechenkünstler kommen jetzt mit der Binomialvertelung (auch nicht schlecht wenn wir dafür ein Roulette-Modul hätten). 

 

Problemstellung:

Wie hoch ist die Wahrscheinlichkeit in n-Coups eine festgelegte Gewinnsumme zu erreichen? 

 

Von old fashioned Struktrogramme bis Codebeispiele (fast egal in welcher Sprache) ist alles willkommen. 

 

Servus

 

P. S. Wenn ich noch öfters Machine Learning als Suchtreffer bekomme schreie ich.. Auf jeden Fall gibt es viele Module für das Projekt von @Egoist

Sehr interessant, artet aber schon in ein Privatstudium aus, mit monatelangen Moduldurchkauen.

bearbeitet von wiensschlechtester
P. S.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 27.9.2018 um 13:53 schrieb wiensschlechtester:

Problemstellung:

Wie hoch ist die Wahrscheinlichkeit in n-Coups eine festgelegte Gewinnsumme zu erreichen? 

 

Von old fashioned Struktrogramme bis Codebeispiele (fast egal in welcher Sprache) ist alles willkommen. 

 

 

Hallo @wiensschlechtester,

 

da sich hier kein Programmierer gemeldet hat, schlage ich mal was vor.

Angenommen, es geht um EC (hier ist es der kompliziertere Fall) hast Du:

 

w = Wunnschgewinn

k = Startkapital

pt = 18/37 (WK für Treffer)

pz = 1/37 (WK für Zero)

pn = 18/37 (WK für Niete)

e = 1 (Einsatz pro Coup, nehme Gleichsatz an)

qt = 1 (Auszahlungsquote Treffer)

qz = 0,25 (Auszahlungsquote Zero)

qn = 0 (keine Auszahlung bei Niete)

 

Nun machst Du 2 Listen, eine starte mit dem einzigen Eintrag "k" (Dein Startkapital)

Die zweite hat den einzigen Eintrag "1" für 100%

 

Stoppst Du, ehe es los geht, hast Du als Minimum immer noch Dein Startkapital auf der Tasche.

Allerdings ist das Maximum auch nicht höher. ;)

 

Rechenfunktion wird rekursiv, was sehr elegant sein kann, wenn die Rechenzeit keine Rolle spielt.

Übergeben werden die beiden Listen und w als Abbruchkriterium.

Die Rechenfunktion erzeugt daraus zwei Listen mit je 3 Einträgen.

 

AusgabeListe_k[0] = Eingabeliste_k[0]  + 1

Ausgabeliste_p[0] = Eingabelist_p[0] * qt

AusgabeListe_k[1] = Eingabeliste_k[0]  - 0,75

Ausgabeliste_p[1] = Eingabelist_p[0] * qz

AusgabeListe_k[2] = Eingabeliste_k[0]  - 1

Ausgabeliste_p[2] = Eingabelist_p[0] * qn

 

Das ist natürlich noch kein Code, sondern nur eine Anregung.

Wenn die Eingabelisten mehr als ein Mitglied haben, musst Du das für jedes weitere in der Rechenfunktion wiederholen.

Heraus kommen dann jeweils zwei dreimal so lange Listen.

So lange Dein Wunschgewinn noch nicht erreicht wurde, wird die rekursive Rechenfunktion sich dann selbst aufrufen,

bis der Rechner raucht.

 

Wenn Du alle Parameter artig mit Zahlen füllen würdest, könnte man aber auch über eine Formel nachdenken.

So pauschal, wie Deine Frage war, geht das natürlich nicht.

 

 

Gruss vom Ego

(der Dir für seine Mühe schon mal ein Pfund Debrecziner in Rechnung stellen will)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 27.9.2018 um 13:06 schrieb novice:

Ich hoffe du machst was vernünftiges draus, ich habe hier alles auf den TISCH gepackt :cowboy:

 

 

DIE_ERLEUCHTUNG.png

Hallo Novice,

 

Der Faktor f*70/100 ist nun geklärt.

Aber warum die Multiplikation mit 0,7?

 

Warum die Setzpfeile mitten in einer absteigenden Coupstrecke?

Wie soll ich rein aus dem Bild einen Algorithmus erkennen?

 

Was Erklärungen betrifft, bist Du wahrlich nicht der König von Deutschland!

Außerdem scheint das System sehr satzarm zu sein.

(Eine gewisse begrenzte Satzarmut ist allerdings günstig und wichtig.)

 

Ich ziehe mich von diesem speziellen Thema zurück.

 

Albert

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 27.9.2018 um 13:53 schrieb wiensschlechtester:

binärer Entscheidungsbsaum

 

Hallo Programmierer, 

 

wollte einmal ein kleines Übungsprogramm erstellen und stolperte schon bei der Programmierlogik. Hat wer schon einen binären Entscheidungsbaum programmiert? Dr. Google zeigt viele Treffer an, doch verwirrte mich mehr... 

 

Einen binären Entscheidungsbaum speichert man in einer Entscheidungstabelle.

Auf EC angewendet stellen die Zeilen dieser Tabelle EC-Figuren dar.

Die Tabellenzeilen können mit einem alphanumerischen Code adressiert werden, der einfach eine Aneinanderreihung der EC-Symbole einer Coupstrecke ist, z.B. "SRRSS" oder "RRRSSS" ist.

 

Man muss die maximale Tiefe des Entscheidungsbaumes (dh. die maximale Figurenlänge) festlegen, bevor die Entscheidungstabelle angelegt wird.

Die Baumstruktur wird dadurch abgebildet, dass man der Entscheidungstabelle eine Spalte für die Vorknoten-Nr. gibt.

Dann dreht man in der Perm eine Schleife vom aktuellen (Endcoup - Tiefe + 1) To Endcoup und trägt in der Entcheidungstabelle für jeden durchlaufenen Coup den alphanumerischen Key

und die Vorknoten-Nr. ein.

Ich exerziere das mal für S/R und Baumtiefe 4:

 

Entscheidungstabelle.gif.614267f7e4edb42af7961027f7bd97dc.gif

 

In der Spalte "Anz. Fälle" zählt man die aufgetretenen Figuren bei der Analyse der Perms.

Anhand der Vorknoteninformation kann man den Baum graphisch reproduzieren und die Fallzahlen an die Endknoten schreiben.

Die graphische Baumvisualisierung wird aber nicht gebraucht, wenn man Satzprognosen aus der Entscheidungstabelle ableiten möchte.

 

Die Entscheidungstabelle vergrößert sich bei wachsender Baumtiefe im Stil der Martingale.

 

Die alphanumerische Codierung der Keys hat den Nachteil, dass jeder Zugriff auf die Entscheidungstabelle mit einem Suchlauf verbunden ist

Im obigen Beispiel habe ich die Keys sortiert eingetragen. In der Praxis muss das nicht so laufen.

Die unsortierte Speicherung verkürzt sogar ein wenig die Suchläufe.

Nach meiner Erfahrung kann man die Suchläufe bis zur Baumtiefe 8 sequentiell codieren. Darüber muss man Datenbanktechniken einsetzen.

 

Die Entscheidungstabellen-Technik werde ich demnächst in meinem neuen Programm "EC-SummenTendenz-Learn" anstelle der Lernmatrizen testen.

https://www.roulette-forum.de/topic/18480-lernfähige-roulettesysteme-ec-summentendenz-learn/

Sie repräsentieren eine differenziertere Erfassung der EC-Figuren und -Tendenzen.

 

Zitat

...

P. S. Wenn ich noch öfters Machine Learning als Suchtreffer bekomme schreie ich.. Auf jeden Fall gibt es viele Module für das Projekt von @Egoist

Sehr interessant, artet aber schon in ein Privatstudium aus, mit monatelangen Moduldurchkauen.

 

Wohl wahr!

Ich teile mit Ego die Hoffnung, dass es mit Python leichter geht, wenn man Python vielleicht innerhalb des nächsten halben Jahres gelernt hat.

 

Albert

bearbeitet von Dr. Manque
Ergänzung
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 26.9.2018 um 01:42 schrieb Egoist:

Nur mal so hier festgehalten:

 

Um mit Neuronetzen zu arbeiten, benötigt es eines normalisierten Inputs.

Das heisst, die Eingabedaten sollten im Bereich von 0...1 liegen.

...

...

 

 

Lieber Ego,

 

solche Betrachtungen/Untersuchungen sind nützlich, hilfreich und gut.

 

Aber zuerst brauchen wir einen Testrahmen, also eine GUI, die wir gemeinsam nutzen und die

- eine Permanenzverwaltung enthält (Perms laden, speichern, anzeigen, Perms und Pools abarbeiten),

- mehrere Märsche und deren Trefferverläufe anzeigen kann (- ähnlich wie in Excel: https://www.roulette-forum.de/topic/18480-lernfähige-roulettesysteme-ec-summentendenz-learn/ -),

- Schalter und Textfelder für die Steuerung zur Verfügung stellt.

 

Dann können wir reihenweise verschiedene Modelle reinhängen und antesten, z.B. zuerst die Normalisierung der Pleins.

Mit tkinter haben wir in der Richtung keine Chance.

 

Ich habe mir pyQt heruntergeladen

158999301_pyQtWidzard-Meldung.gif.189b401ff1815c938829fe27c765caba.gif

 

595143095_pyQtWidzard-Komponenten.gif.1b0a70919b72499c8f0469ae41533f47.gif

 

Habe aber noch keine Zeit zum Üben gehabt.

 

Gruß!

Albert

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 28.9.2018 um 23:25 schrieb Egoist:

, könnte man aber auch über eine Formel nachdenken.

So pauschal, wie Deine Frage war, geht das natürlich nicht.

 

 

Gruss vom Ego

(der Dir für seine Mühe schon mal ein Pfund Debrecziner in Rechnung stellen will)

Hallo Ego, 

 

danke für die Antwort und den Versuch einer Erklärung welche mir leider nicht weiterhalf. 

 

Es scheint so als wir uns doch nicht immer verstehen. Meine Frage scheint mir deutlich, mit Deiner Antwort komme ich leider nicht weiter, und bei Dir ist es ja wohl umgekehrt. Eine rekursiv Variante dachte ich auch an, nun ja zu Übungszwecken werde ich mal eine zweite Version probieren, falls mal fertig poste ich das Ergebnis, und würde mich zwecks Lerneffekt über andere Versionen freuen. 

 

Würstel kann ich Dir auch ohne hilfreiche Antwort, der Versuch gegen mein Unverständnis anzukämpfen zählt, schicken. 

 

Der Gedanke mit Formel und eben allgemeine Roulette Berechnungen kam mir natürlich auch. So haben kleine Übungsprogramme gleich einen Nutzen, und könnte auch als Anwerbung für Mitstreiter dienen. 

 

Servus

bearbeitet von wiensschlechtester
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 29.9.2018 um 13:38 schrieb Dr. Manque:

 

Einen binären Entscheidungsbaum speichert man in einer Entscheidungstabelle.

.... 

 

Hallo Albert, 

 

 vielen Dank für die erstaunlich gute und einfache Erklärung! Solltest die Wiki-Artikel eindeutschen :-). 

 

Mir kam da gleich ein Gedanke für eine noch bessere Anwendung als Roulette - ist somit gleich auf der Liste. 

 

Entschuldigt bitte dass der Output meiner Versuche etwas dauern wird, vielleicht eröffnen wir für kleinere Programme gleich einen eigenen Thread. 

 

Servus 

 

einkleinwenigschlauerer

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 30.9.2018 um 13:07 schrieb Dr. Manque:

Aber zuerst brauchen wir einen Testrahmen, also eine GUI, die wir gemeinsam nutzen und die

- eine Permanenzverwaltung enthält (Perms laden, speichern, anzeigen, Perms und Pools abarbeiten),

- mehrere Märsche und deren Trefferverläufe anzeigen kann (- ähnlich wie in Excel: https://www.roulette-forum.de/topic/18480-lernfähige-roulettesysteme-ec-summentendenz-learn/ -),

- Schalter und Textfelder für die Steuerung zur Verfügung stellt.

 

Hallo Albert,

 

da Du sowas mit Deinen gewohnten Mitteln (VBA und Oberflächeneditor) in kürzester Zeit zusammenzimmern kannst, mach doch mal,

denn ich habe keinen Plan, wie dieses GUI aussehen soll.

Es muss gar kein funktionierendes Programm dahinter stehen, es soll nur eine Designstudie sein, damit ich kapiere, was Dir fehlt.

 

Cetero censeo: So lange wir keinen Algorithmus haben, der mit einer Permanenz was reissen kann, was nutzt uns da ein GUI mit dem tausende Perms händisch und mühsam unterzuschieben sind? Mal ganz davon abgesehen, dass man locker ein Verzeichnis mit beliebig vielen Permanenzen befüllen kann, die dann eine nach der anderen (ohne GUI) blitzschnell abgefrühstückt werden könnten.

 

Schalter und Textfelder kann tkinter auf alle Fälle.

 

Am 30.9.2018 um 13:07 schrieb Dr. Manque:

Ich habe mir pyQt heruntergeladen

 

Das hatte ich Dir empfohlen, weil es der Arbeit unter VBA mit Oberflächeneditor recht nahe kommt.

Version 5 soll restriktivere Lizenzbestimmungen haben, weswegen viele sich mit Version 4 begnügen.

 

Am 30.9.2018 um 13:07 schrieb Dr. Manque:

Habe aber noch keine Zeit zum Üben gehabt.

 

Ganz ohne Probieren wird es wohl nicht gehen, aber ich dachte, Du würdest Dich rasch heimisch fühlen.

 

Python ist eigentlich eher im Maschinenraum tätig und braucht nur Daten, aber keine Benutzerinteraktion.

Vergleiche es mit einem Fleischwolf, da schmeisst Du oben was rein und unten kommt was verarbeitetes heraus.

Das kann durchaus auch ein *.csv sein, was Excel gerne nimmt, oder ein *.htm für Deinen Browser.

 

Gerade eben habe ich erfahren, dass Google kostenlose Jupyternotebooks bereitstellt, die schon für deep learning optimiert sind.

Damit kannst Du sogar Googles Highend Grafikkarten und sogenannte TPUs (Spezial ASICs) in Deine Dienste stellen.

Das muss ich unbedingt mal ausprobieren...

 

https://www.youtube.com/watch?v=tjsHSIG8I08

 

 

Viel Spass mit Python

wünscht Euch Ego

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 1.10.2018 um 22:25 schrieb wiensschlechtester:

Hallo Ego, 

 

danke für die Antwort und den Versuch einer Erklärung welche mir leider nicht weiterhalf. 

 

Es scheint so als wir uns doch nicht immer verstehen. Meine Frage scheint mir deutlich, mit Deiner Antwort komme ich leider nicht weiter, und bei Dir ist es ja wohl umgekehrt.

 

Mein lieber Wiener,

 

es tut mir leid, wenn wir an einander vorbeigeredet haben.

Deine Frage verstand ich so, wie Du sie gestellt hattest:

 

Am 27.9.2018 um 13:53 schrieb wiensschlechtester:

Problemstellung:

Wie hoch ist die Wahrscheinlichkeit in n-Coups eine festgelegte Gewinnsumme zu erreichen? 

 

Da von Coups die Rede war implizierte ich, es ginge um Roulette (nicht um Münzwurf).

Das verkompliziert die Sachlage ganz erheblich, weil es bei EC pro Coup 3, statt sonst nur 2 Folgezuständen geben kann.

Ferner hattest Du verabsäumt zu erwähnen, ob es wirklich um EC gehen soll, sonst wäre es, wie gesagt, einfacher.

 

Das ganze mit Tabellen lösen zu wollen, halte ich im Hinblick auf den Einfluss der Zero für utopisch, daher kam ich auf den rekursiven Ansatz.

 

Am 1.10.2018 um 22:25 schrieb wiensschlechtester:

Eine rekursiv Variante dachte ich auch an, nun ja zu Übungszwecken werde ich mal eine zweite Version probieren, falls mal fertig poste ich das Ergebnis, und würde mich zwecks Lerneffekt über andere Versionen freuen. 

 

Meine Lust, das wirklich in Python auszuformulieren, hält sich momentan in Grenzen, denn das Ergebnis wird uns leider nicht ins Licht führen ;)

 

Am 1.10.2018 um 22:25 schrieb wiensschlechtester:

Würstel kann ich Dir auch ohne hilfreiche Antwort, der Versuch gegen mein Unverständnis anzukämpfen zählt, schicken. 

 

Die würden mir natürlich doppelt schmecken, wenn ich sie mir ehrlich verdient hätte.

Mittlerweile ist es hier schon wieder fast so kalt wie im Kühlschrank, da käme ein Lebensmitteltransport langsam wieder in Frage...

 

 

Gruss aus dem nasskalten Norden

vom Ego

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 3.10.2018 um 00:36 schrieb Egoist:

 

Mein lieber Wiener,

 

es tut mir leid, wenn wir an einander vorbeigeredet haben.

Deine Frage verstand ich so, wie Du sie gestellt hattest:

 

 

 

 

Das ganze mit Tabellen lösen zu wollen, halte ich im Hinblick auf den Einfluss der Zero für utopisch, daher kam ich auf den rekursiven Ansatz.

 

Oiso no amoi, 

 

da weder Du noch Python mich verstehen wollen #snüff :

 

Nach Auswahl einer beliebigen Chance, sowie einer beliebigen Anzahl von Coups, als auch einer frei wählbaren Gewinnsumme, soll die Wahrscheinlichkeit eines positiven Angriffes berechnet werden. 

 

Hatte Heute das Problem mal, meiner Meinung nach unelegant, gelöst (Version2) .  Poste es unter Tags, da ich gerade am Handy tippe. 

 

gn8

bearbeitet von wiensschlechtester
Link zu diesem Kommentar
Auf anderen Seiten teilen

c = int(input ("Chancengröße eingeben: "))
w = int(input("Gewinnziel pro Angriff eingeben: "))
n = int(input("maximale Coupanzahl eingeben: "))
e = 1         #Einsatzgröße für spätere Erweiterung 
a = (36/c)-1    #Auszahlung
negativ=[1,0]    #p, €
positiv=0

for i in range(n):
    temp=[] 
    x = round(len(negativ)/2)
    for j in range(x):   
        k=j*2
        p= negativ[k] * (c/37)
        q= negativ[k] * (37-c)/37
        g= negativ[k+1] +(e*a) 
        v= negativ[k+1]-e        
        if g >= w:
            positiv+= p 
        else:
            temp.append(p) 
            temp.append(g)            
        temp.append(q)
        temp.append(v)    
    negativ = temp
    print(i+1, positiv) 

Kleines aber leider langsames Programm.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 21 Stunden schrieb wiensschlechtester:

da weder Du noch Python mich verstehen wollen #snüff :

 

Nach Auswahl einer beliebigen Chance, sowie einer beliebigen Anzahl von Coups, als auch einer frei wählbaren Gewinnsumme, soll die Wahrscheinlichkeit eines positiven Angriffes berechnet werden. 

 

Hallo Wiener,

 

dann hatte ich Dich doch richtig verstanden, nur haben wir hierzulande noch die Zeroteilung soweit ich weiss.

Es tut mir aufrichtig leid zu lesen, diese sei bei Euch bereits abgeschafft worden.

 

vor 21 Stunden schrieb wiensschlechtester:

Hatte Heute das Problem mal, meiner Meinung nach unelegant, gelöst (Version2) .

 

So unelegant hast Du das gar nicht gelöst.

Im Wesentlichen hast Du den Stack eingespart, der bei einer rekursiven Lösung exponentiell belastet würde.

Also bleibt nur Dein Programm zu optimieren, damit es schneller wird.

 

Momentan habe ich es mir nur angeschaut, um seine Funktionsweise zu erkennen, über die mangelnde Geschwindigkeit kann ich nur mutmassen.

Sie hängt exponentiell vom Wert w/e ab, damit kannst Du selbst die schnellsten Rechner abrauchen lassen :D.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb wiensschlechtester:

c = int(input ("Chancengröße eingeben: "))

 

Hier würde ich c nicht als Integer einrichten, das spart eine Menge Divisionen und Multiplikationen später.

Wie wäre es mit einem Float?

c = 1 - 18/37 - 1/37*3/4

umgeformt wäre das

c = 1 - 37,5/74

 

vor 3 Stunden schrieb wiensschlechtester:

p= negativ[k] * (c/37)

q= negativ[k] * (37-c)/37

 

Hier fallen dann Divisionen alle weg, weil c bereits den Bruch enthält.

 

vor 3 Stunden schrieb wiensschlechtester:

if g >= w:

    positiv+= p

 

Hier habe ich ein Verständnisproblem.

Nehmen wir an, e = w, also der Wunschgewinn ist genau ein Stück, und wir spielen EC.

Lassen wir das mal für n = 4 laufen, so ist die Wahrscheinlichkeit in Runde 1  ca 49,3:50,7 für einen positiven Ausgang.

Da Du dieses Ergebnis nicht weiter verfolgst, sondern ausgibst, ohne es anschliessend zu löschen, stoppen alle Trefferereignisse hier.

Aber alle negativen Verläufe werden wieder geprüft und deren bis w laufenden Ausläufer werden anschliessend p zugeschanzt.

 

Nach logischen Gesichtspunkten kann auf EC eine Anfangsniete nur mit 2 unmittelbaren Folgetreffern noch ins Ziel führen.

Alle Ausgänge mit 2 Nieten (n/2 - w) können w nicht mehr erreichen.

Dadurch ergibt sich eine exponentielle Optimierungsmöglichkeit für grosse Werte von n.

 

Ausserdem solltest Du p nach der Ausgabe auf Null setzen, damit die rapide Verkleinerung der Erholungschance sichtbar wird.

 

 

Gruss vom Ego

(sorry, das war mal sehr grob und laut gedacht, da sind sicher kritikwürdige Fehler drin)

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie ist deine Meinung dazu?

Du kannst jetzt schreiben und dich später registrieren. Bereits registrierter Teilnehmer? Dann melde dich jetzt an, um einen Kommentar zu schreiben.
Hinweis: Dein Beitrag wird nicht sofort sichtbar sein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Neu erstellen...