Entwickler-Ecke
Freeware Projekte - Veranschaulichung des Benfordschen Gesetzes
GTA-Place - Mi 20.12.06 20:18
Titel: Veranschaulichung des Benfordschen Gesetzes
Kurze Vorgeschichte:
Wir haben in Mathe, Klasse 10, gerade Wachstum (Linear, ...) und da darf zwischendrin auch nicht das "
Benfordsche Gesetz [
http://de.wikipedia.org/wiki/Benfordsches_Gesetz]" fehlen, vor allem dann nicht, wenn Wahrscheinlichkeitsrechnung und Logarithmus auf dem Lehrplan der 10. Klasse steht. Also bekamen wir eine Hausaufgabe: Analysiert irgendeinen Text und schreibt die Anfangsziffern raus. Nun, hab ich natürlich keine Lust drauf, warum auch? Ich bin doch Programmierer - fix ist ein Programm dafür geschrieben, dass die Wikipedia analysiert (natürlich ohne Schnick-Schnack). Und ich Depp, muss dass natürlich meinem Lehrer erzählen. Tja, jetzt fand er das so toll, dass ich das Programm morgen vorstellen "darf". Gut, konnte das Prog ja nicht so lassen, sieht man ja nix. Also hingesetzt, Programm "richtig" geschrieben und nun ist es fertig und kann auch hier in der EE vorgestellt werden.
Benfordsches Gesetz
| Wikipedia hat folgendes geschrieben: |
| [...] Für die Anfangsziffern in Zahlen des Zehnersystems gilt zum Beispiel: Zahlen mit der Anfangsziffer '1' sind etwa 6,5-mal häufiger als solche mit der Anfangsziffer '9'". |
Beschreibung:
Das Programm analysiert eine x-beliebige Anzahl von zufälligen Wikipedia-Artikeln. Angezeigt wird:
- Der Fortschritt, Restzeit und aktueller Artikel in der Caption
- Der Artikel im Feld oben
- Die gefundenen Zahlen im Feld unten links
- Die Verteilung der Ziffern 1 - 9 im Feld mitte links
- Als Diagramm im Feld rechts
- Benfordsche Kurve eingezeichnet
Änderungen:
Version 1.1:
- Kein TWebBrowser mehr
- Größe des Fensters fest
- Kein Memo mehr
- Sofortige Analyse
- (teilweise) Legende
- Kleineres Programm
Version 1.2:
- Thread eingebaut
- Bissl verschnellert
- Sicherheit erhöht, bzgl. Thread
Mein Wunsch:
Guckt euch das Programm an, falls das jemand noch bis morgen früh schafft und sucht Fehler oder auch Verbesserungsvorschläge.
Grüße
GTA-Place
Moderiert von
Christian S.: url-Tag korrigiert
uall@ogc - Mi 20.12.06 20:49
Funzt nicht: Immer unbekannte Seite und bei Stop -> ungültige Zeigeroperation
BenBE - Mi 20.12.06 20:49
Das Klicken vom TWebBrowser ist recht nervig ... Ferner solltest Du mal schauen, ob Du das nicht auch direkt über TClientSocket oder TIdHTTPClient hinbekommst.
Nach dem Abbrechen erhalte ich noch einige Scriptfehler vom TWebbrowser ... (Objekt unterstützt diese Eigenschaft nicht). Jeweils von den Wiki-Pages
Du solltest ggf. auch die Benfordsche Kurve mit eintragen ...
Ferner wäre eine "progressive Statusanzeige" wünschenswert ... Also immer während der Anzeige nach und nach deine Messergebnisse schon vorauswerten.
Multi-Threading wäre eine Option ... Das Programm "hängt" ;-) immer ein wenig ^^
Christian S. - Mi 20.12.06 20:56
Hallo!
Nettes Programm und eine gute Idee, schnell an Texte zu kommen :zustimm:
Ein paar Sachen sind mir aufgefallen:
- Das Programm erscheint mir ziemlich langsam. Kann es sein, dass der sogar wartet, bis alle Bilder im Browser geladen sind :gruebel:
- Die Form sollte nicht resizable sein.
- Manchmal reagiert der "Stop"-Button nicht. Vielleicht solltest Du über Threads nachdenken.
[*]Das Memo ist ein bisschen unübersichtlich
[*]Im Diagramm fehlen die Achsen-Beschriftungen
[*]In der Tabelle würde ich noch eine Spalte vorne dran machen, wo ich die Zeilen beschrifte.[/list]
Grüße
Christian
GTA-Place - Mi 20.12.06 21:19
uall@ogc hat folgendes geschrieben: |
| Funzt nicht: Immer unbekannte Seite und bei Stop -> ungültige Zeigeroperation |
Mh... das ist merkwürdig, schon weil beim Stop-Button nur die Anzahl der bearbeiteten Seiten auf die Anzahl der gewünschten Seiten setzt*. Die aufgerufene Seite ist übrigens http
://de.wikipedia.org/wiki/Spezial:Random - Proxy?
*jetzt nicht mehr.
Christian S. hat folgendes geschrieben: |
| Nettes Programm und eine gute Idee, schnell an Texte zu kommen :zustimm: |
Danke :).
Behoben / Eingebaut (bzw. teilweise):
BenBE hat folgendes geschrieben: |
| Das Klicken vom TWebBrowser ist recht nervig ... Ferner solltest Du mal schauen, ob Du das nicht auch direkt über TClientSocket oder TIdHTTPClient hinbekommst. |
BenBE hat folgendes geschrieben: |
| Nach dem Abbrechen erhalte ich noch einige Scriptfehler vom TWebbrowser ... (Objekt unterstützt diese Eigenschaft nicht). Jeweils von den Wiki-Pages |
Christian S. hat folgendes geschrieben: |
| Das Programm erscheint mir ziemlich langsam. Kann es sein, dass der sogar wartet, bis alle Bilder im Browser geladen sind :gruebel: |
Christian S. hat folgendes geschrieben: |
| Die Form sollte nicht resizable sein. |
BenBE hat folgendes geschrieben: |
| Du solltest ggf. auch die Benfordsche Kurve mit eintragen ... |
BenBE hat folgendes geschrieben: |
| Ferner wäre eine "progressive Statusanzeige" wünschenswert ... Also immer während der Anzeige nach und nach deine Messergebnisse schon vorauswerten. |
Christian S. hat folgendes geschrieben: |
| Das Memo ist ein bisschen unübersichtlich |
Christian S. hat folgendes geschrieben: |
| Im Diagramm fehlen die Achsen-Beschriftungen |
Christian S. hat folgendes geschrieben: |
| In der Tabelle würde ich noch eine Spalte vorne dran machen, wo ich die Zeilen beschrifte. |
BenBE hat folgendes geschrieben: |
| Multi-Threading wäre eine Option ... Das Programm "hängt" ;-) immer ein wenig ^^ |
Christian S. hat folgendes geschrieben: |
| Manchmal reagiert der "Stop"-Button nicht. Vielleicht solltest Du über Threads nachdenken. |
Version 1.2 geuppt:
Version 1.1
- Kein TWebBrowser mehr
- Größe des Fensters fest
- Kein Memo mehr
- Sofortige Analyse
- (teilweise) Legende
- Kleineres Programm
Version 1.2:
- Thread eingebaut
- Bissl verschnellert
Thx @ll.
Delete - Do 21.12.06 00:34
@GTA-Place: sorry, aber ich frag mich was das "Benfordsche Gesetz" eigentlich soll?
dass z.b. hier:
- Version 1.1:
- Version 1.2:
die zahl 1 öfters vorkommt als die zahl neun ist doch jeden klar, wer fängt schon mit der versionsnummer 9 an zu zählen?
kennt jemand den sinn dieses quatsches? falls ja, wäre ich froh, wenn er mich aufklären könnt...
Christian S. - Do 21.12.06 00:45
Auch wenn man das als eingefleischter Programmierer kaum glauben mag, so werden Zahlen tatsächlich noch an anderer Stelle verwendet und nicht nur als Versionnummern :zwinker:
Ein Beispiel aus der Nicht-EDV-Welt:
Es gab mal eine sehr interessante "Quarks & Co."-Sendung, bei der gezeigt wurde, wie Wirtschaftsprüfer mittels dieses Gesetzes Manipulationen aufdecken konnten. So neigt der Mensch dazu, bei fingierten Beträgen eine Gleichverteilung der Ziffern zu erstellen, was beim Vergleich mit dem Benford-Gesetz sofort auffällt.
Delete - Do 21.12.06 00:56
@Christian S.: ist ungefähr so wie im journalismus, da kommt das wichtigste auch immer zuerst.. und daher ist das wichtigste auch meist in den ersten 10 oder 100 zeilen ;-)
oder bei den lehrbüchern, da kommt auch das wichtiste zu erst... und zum schluss immer der anhang... oder was nicht so dringend erscheint, damit lassen sich auch die fingerabdrücke erklären.
aber ich frag mich dennoch, was soll das ganze? gibts denn da was vernünftiges womit man was anfangen kann? mir scheint das ganze doch 'n ganz grosser humbug zu sein.. und ungefähr auf der selben gesetzmässigkeit zu beruhen wie das berümte 80/20 gesetz ... welches auch nur spasseshalber existiert...
Christian S. - Do 21.12.06 01:01
Grenzgaenger hat folgendes geschrieben: |
| aber ich frag mich dennoch, was soll das ganze? gibts denn da was vernünftiges womit man was anfangen kann? |
Hast Du mein Posting nicht gelesen?
GTA-Place - Do 21.12.06 07:53
Christian S. hat folgendes geschrieben: |
Ein Beispiel aus der Nicht-EDV-Welt:
Es gab mal eine sehr interessante "Quarks & Co."-Sendung, bei der gezeigt wurde, wie Wirtschaftsprüfer mittels dieses Gesetzes Manipulationen aufdecken konnten. So neigt der Mensch dazu, bei fingierten Beträgen eine Gleichverteilung der Ziffern zu erstellen, was beim Vergleich mit dem Benford-Gesetz sofort auffällt. |
Das ist der Beitrag in PDF-Form:
http://www.quarks.de/pdf/Quarks_Zufall_cwdr2002.pdf (Seite 11 ff). Es reicht zum Beispiel 3 von 12.000 Rechnungen zu ändern, um diesen Betrug zu merken.
JayEff - Do 21.12.06 09:28
Auf dem Schulrechner passiert schlicht garnix... Drücke Start: nix. Drücke Stop: Noch weniger: Der Startbutton wird nicht mehr enabled ... naja, vermutlich hat der schulrechner ne komische Firewall (und ein Proxy sowieso ... *seufz*)
Danny W. - Do 21.12.06 10:15
Hier in der Arbeit sitze ich auch hinter nem Proxy, aber es läuft einwandfrei ^^ Nice Work!
Horst_H - Do 21.12.06 11:59
Hallo,
die Ergebnisse der WIKI Seiten weichen aber extrem von Bendford ab.Die 1 war bei mir in der Nähe von 60%.
Vielleicht sind Aktienkurse und Umsätze besser zu gebrauchen.
Bitte die Uhrzeit nicht verarbeiten ;-) die ist meist nach 10:00 also am Anfang 1.
Siehe :
http://sinvnet.teledata.de/sis/detail/timesandsales.html?tag=1166572800&vonUhrzeit=09%3A00&bisUhrzeit=20%3A10&INST_ID=1234567&sym=WDI.ETR&ts=H
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| program InCSV;
uses sysutils,classes;
const SinvTagesKurse ='http://sinvnet.teledata.de/sis/detail/timesandsales.html?vonUhrzeit=09:00&bisUhrzeit=18:00&INST_ID=1234567&ts=H&tag=';
var tdDatum : TDateTime; i : integer;
AktienKuerzel : TStringlist; UnixTag, HttpAdr, HttpAdresse: string;
begin AktienKuerzel := TStringlist.create; AktienKuerzel.Loadfromfile('AktienKuerzel.txt'); AktienKuerzel.sort; tdDatum := date-1.0; while tddatum<=date do begin if DayOfWeek(tdDatum)in [2..6] then begin Unixtag := FloattoStr((int(tdDatum)-25569.00)*86400); HttpAdr := SinvTagesKurse+Unixtag+'&sym='; i := 0; while i <1 do begin HttpAdresse := HttpAdr+AktienKuerzel[i]+'.ETR'; writeln(HttpAdresse); inc(i); end; end; tdDatum := tdDatum+1.0; end; AktienKuerzel.free; readln; end. |
Die KurzelListe ist etwas alt, sodaß manche nicht mehr existieren TUI wurde TUI1 etc.
Gruß Horst
GTA-Place - Do 21.12.06 13:59
JayEff hat folgendes geschrieben: |
| Auf dem Schulrechner passiert schlicht garnix... Drücke Start: nix. Drücke Stop: Noch weniger: Der Startbutton wird nicht mehr enabled ... naja, vermutlich hat der schulrechner ne komische Firewall (und ein Proxy sowieso ... *seufz*) |
Proxy oder Firewall, eins der beiden. Wobei Proxy ja bei Mantis geht.
Mantis1987 hat folgendes geschrieben: |
| Hier in der Arbeit sitze ich auch hinter nem Proxy, aber es läuft einwandfrei ^^ Nice Work! |
Danke :)
Horst_H hat folgendes geschrieben: |
Hallo,
die Ergebnisse der WIKI Seiten weichen aber extrem von Bendford ab.Die 1 war bei mir in der Nähe von 60%. |
Richtig, wobei man sagen muss, dass alle anderen Zahlen Benford entsprechen (vom Kurvenverlauf), lediglich die 1 - und das liegt an den Jahreszahlen (1000 - 1999) - ist doppelt so hoch.
Ich bekomme die Meldung: "Der Referer "http://www.delphi-forum.de/posting.php?mode=topicreview&t=67838&p=407850" ist für Institut "1234567" nicht freigeschaltet."
Horst_H - Do 21.12.06 14:26
Hallo,
ich habe das übermitteln des Referer's abgeschaltet (F12 bei Opera) und dann keine Probleme.
Oder vorher diese Seite aufrufen:
"http://sinvnet.teledata.de/sis/markt.html?INST_ID=1234567&markt=1" und dann
"http://sinvnet.teledata.de/sis/detail/timesandsales.html?tag=1166572800&vonUhrzeit=09%3A00&bisUhrzeit=20%3A10&INST_ID=1234567&sym=WDI.ETR&ts=H"
Gruss Horst
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!