You are not logged in.

  • Login

31

Wednesday, February 11th 2009, 11:35am

Quoted

Original von DitschiGP
masters live
ausgehend von der frage im ersten post sind wir jetzt beim intellektuellen schwanzvergleich


Wir müssen Worf doch bei seinem argumentativen Wissenserwerb unterstützen. Ich find das übrigens toll dass du da mit machst - für mich war das Lesen deines Posts absolute Zeitverschwendung - für ihn ist es das aber sehr wahrscheinlich nicht :)

DitschiGP

Professional

Posts: 641

Location: Brunsbüttel

Occupation: Ger

  • Send private message

32

Wednesday, February 11th 2009, 11:41am

konnte ja nicht ahnen, dass du nicht in der lage bist deine zeit vernünftig einzuteilen

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

33

Wednesday, February 11th 2009, 12:55pm

Quoted

Original von MaxPower
Es hat sich eingebürgert, als Startwert die aktuelle Zeit in MS zu nehmen, da dies eine sich ständig ändernde Eingabevariable darstellt. Defautlmässig muss man der funktion in Java z.B. nichts übergeben.

exakt

Quoted

Original von MaxPower
Wenn man einen festen Wert übergibt dann ist es ja nicht mehr zufällig, da ja die funktion quasi eine Abbildung der Eingabevariable auf eine Folge von scheinbar zufälligen Ausgabevariablen ist. D.h. übergibt man immer die gleiche Zahl, so erscheinen die gleichen Ausgabezahlen, es sei denn der Algorithmus nimmt irgendwann nochmal variablen auf (z.B. nochmals die uhrzeit, durch das scheduling ist der 2. messwert dann quasi auch zufällig, da es ja nicht deterministisch ist, wenn der 2. Messpunkt ist.

Hier liegt der Gedankenfehler bei vielen von euch, vor allem pitt82 und leider auch Napo. ;(
Erst einmal ist es ja richtig, dass wenn ich den Zufallszahlengenerator n mal hintereinander neu starte, ich beim Startwert als Uhrzeit mit sehr hoher Wahrscheinlichkeit 5 unterschiedliche Zahlen bekomme. Augenscheinlich ist das also eine zufällige Sequenz - mathematisch wäre das aber eine schlechte zufällige Sequenz.

Wann ist denn überhaupt etwas zufällig?
  • Es kann nur die Hypothese die Sequenz ist nicht zufällig mittels statistischer Tests getestet und verworfen werden. Je mehr Tests eine solche Sequenz besteht, desto besser und zufälliger ist sie.
  • Es klang schon an, aber um es noch einmal explizit zu sagen: Eine Zahl alleine ist nicht zufällig, man kann immer nur eine Folge testen.

Jetzt gibt es prinzipiell zwei Arten diese Folge zu erzeugen: Zum einen kann ich zu einem seed n Werte hintereinander nehmen, nennen wir es Variante 1. Zum anderen kann ich zu n verschiedenen Seeds (z.B. Zeit) jeweils den 1. Wert nehmen, Variante 2.
Die letztere Variante scheinen die meisten hier zu favorisieren bzw. sehen den Unterschied zwischen beiden Varianten nicht. Darum werde ich jetzt mal erklären, dass es da einen fundamentalen Unterschied gibt.

Hinter der Java-Funktion Random steckt eine mathematische Funktion, welche die eigentliche Arbeit macht, abhängig von einem Startwert (bei weglassen diesem ist es nur ein Default-Startwert) wird eine Folge von Zahlen erzeugt.
Was passiert nun genau, wenn ich Variante 2 nehme? Grundsätzlich ist eine (mathematische) Funktion eine Relation, welche linkstotal und rechtseindeutig ist. Dies bedeutet, dass aus dem Definitionsbereich jedes Element einen Funktionswert im Wertebereich besitzen muss (d.h. die Funktion "macht" irgend etwas mit jedem möglichen Ausgangswert), und rechtseindeutig bedeutet, dass jedes Element nur auf genau ein anderes geschickt werden kann. In der Schreibweise y=f(x) steckt ja, dass y der Wert ist, auf den die Funktion f das Element x schickt.
Sei f also jetzt unsere Random-Funktion, z.B. der Mersenne-Twister. Als Funktionsargumente seien nur Zahlen vom Typ long zulässig. Der Einfachheit halber sagen wir, long sei unsigned long integer bis 2^32, also die Zahlen 1 bis 2^32 (ja ich habe es verschoben). Die Random-Funktion soll ebenso Werte vom typ unsigned long integer zwischen 1 und 2^32 ausgeben, um das Beispiel einfach zu halten.
Egal welchen Startwert x zwischen 1 und 2^32 man nimmt, immer bekommt man einen Funktionswert zwischen 1 und 2^32, d.h. bestenfalls ist f eine Bijektion. Dann war aber der ganze Kram über den Zufallszahlengenerator nur Augenwischerrei, er tut hier nämlich gar nichts zur Sache! Wenn man die Systemzeit als long (=x) der Random-Funktion f übergibt, dann bekommt man bestenfalls eine Permutation zurück.
Ich hätte mir den Zufallszahlengenerator also auch sparen können und direkt die Systemzeitzahl long bijektiv auf den Wertebereich von long abbilden können, nichts anderes geschieht ja.

Natürlich hat Variante 1 auch nur den Wertbebreich von 1 bis 2^32, allerdings kommt es für Zufälligkeit nciht auf den Wertebereich, sondern auf die Abfolge der Werte untereinander an (als Gedankenexperiment könnte man auch nur auf f : X -> {0,1} abbilden, de facto ist es ja das, was intern im Computer geschieht). Der Mersenne-Twister hat eine Periodenlänge von 2^19937-1, was einer Zahl mit ca. 6000 Stellen entspricht. Erst nach so vielen Zahlen wiederholt sich die Folge.
Nimmt man immer nur die Systemzeit als neuen seed, also Variante 2, so ist die Güte der Zufallszahlen davon abhängig, in welchem Rythmus man zieht - aber bei weitem nciht so gut wie die Sequenz nach Variante 1 (wenn man sich die Systemzeit genau anschaut, dann variiert sie nicht zu stark, das Problem dürfte also recht niedrigdimensional werden). Jedenfalls ist man mit Variante 2 statistisch um Weeeeelten schlechter als mit Variante 1!
Es macht offensichtlich bei Verwendung von Variante 2 auch keinen großen Unterschied, ob ich den ersten oder zweiten Algorithmus im Welt-Artikel von tari nehme. Ich muss ja nur halbwegs gleichmäßig die Elemente aus dem Definitionsbereich in den Wertebereich abbilden. De facto ist Variante 2 also nur von der Systemzeit abhängig. Alles, was einen Zufallszahlengenerator beim Computer ausmacht ist damit also hinfällig.
Wenn man persönlich eine solche "gleichmäßige Surjektion" (wenn die Mächtigkeit des Bildes die des Urbildraums nicht übersteigt) der Systemzeit schon für Zufall hält... nun gut, da kann ich dann auch nicht mehr viel zu sagen. Oder doch: Nur weil etwas auf den ersten Blick sehr zufällig aussieht, muss es bei genauerer Betrachtung nicht zufällig (bzgl. einer normalen Qualität) sein.

Eine persönliche Note: Ich bin zumindest betroffen, das Napo als Mathematiker diesen Zusammenhang nicht gesehen hat, dass es sich bei immer neuer Aktualisierung des seeds nur um eine besten- und einfachstenfalls Permutation handelt, also speziell jeglicher "Zufall" schon aus dem Startwert kommen muss. :(

This post has been edited 5 times, last edit by "AtroX_Worf" (Feb 11th 2009, 2:10pm)


34

Wednesday, February 11th 2009, 1:03pm

naja, das muss dann der thread-ersteller entscheiden, welche info ihm jetzt am meisten weitergeholfen hat. ich persönlich finde es gut, dass du das so detailliert beschreibst, allerdings würde ich das eher unter der rubrik "für freaks" einordnen, dem normalen menschen hilft das kein stück weiter.
es ist eben oft nicht die frage "weiß ich etwas" sondern "kann ich etwas beibringen"

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

35

Wednesday, February 11th 2009, 1:15pm

Quoted

Original von SenF_Toddi
naja, das muss dann der thread-ersteller entscheiden, welche info ihm jetzt am meisten weitergeholfen hat. ich persönlich finde es gut, dass du das so detailliert beschreibst, allerdings würde ich das eher unter der rubrik "für freaks" einordnen, dem normalen menschen hilft das kein stück weiter.
es ist eben oft nicht die frage "weiß ich etwas" sondern "kann ich etwas beibringen"

Ich wäre ja auch gar nciht so tief darauf eingegangen. Ich fand nur Ramses Beitrag nicht sehr hilfreich bei der Frage, wo der Zufall im Computer her kommt - er hat einfach eien black box Lösung gepostet. In den Postings danach kam es mehrfach entweder zu falschen Zungenschlägen oder das Konzept war wirklich falsch verstanden. Deswegen habe ich es jetzt hier drüber noch einmal mit Variante 1 und 2 erklärt (zugegeben etwas mathematisch). Es geht ja schon längst nicht mehr um Ramses' erstes Posting sondern um die Teils irreführenden und teils wirklich falschen Aussagen danach. Vor dem Inhalt meines vorherigen Postings sieht man beispielsweise, dass pitt82's Argumentation völlig ins leere läuft, weil er verschiedene Konzepte in seinem Kopf vermischt hat. Nicht die Güte des Seeds ist für gute Zufallszahlen verantwortlich, sondern der Algorithmus selbst.

36

Wednesday, February 11th 2009, 1:22pm

Ich glaube, ich habs noch immer nicht verstanden. Bitte nochmal beide Konzepte weniger mathematisch erläutern.

Ich meine, wenn ich den gleichen Seed nehme, kommt doch zwangsläufig immer die gleiche Folge an Zahlen, jedes mal wenn ich den Alghoritmus starte.

Welchen Seed nimmt denn der Taschenrechner, der hat ja keine Systemzeit soweit ich weiß?!? Und wie oft wiederholt er den Algorithmus, bis er dann eine "zufällige" Zahl anzeigt?

plexiq

Professional

Posts: 1,512

Location: Wien

  • Send private message

37

Wednesday, February 11th 2009, 1:29pm

Quoted

Original von AtroX_WorfWann ist denn überhaupt etwas zufällig?

* Es kann nur die Hypothese die Sequenz ist nicht zufällig mittels statistischer Tests getestet und verworfen werden. Je mehr Tests eine solche Sequenz besteht, desto besser und zufälliger ist sie.
* Es klang schon an, aber um es noch einmal explizit zu sagen: Eine Zahl alleine ist nicht zufällig, man kann immer nur eine Folge testen.


Wenn wir schon pingelig sind:
Natürlich kann eine Zahl "für sich alleine" eine Zufallszahl sein, also das Ergebnis eines Zufallsexperiments. Das wir die Zahl für sich alleine nicht statistisch auf Zufälligkeit testen können tut da eigentlich nix zur Sache?

Ansonsten hast du aber schon recht, finds durchaus wichtig drauf hinzuweisen das die folgenden Codesnips ***nicht*** ident sind.

Source code

1
2
3
4
5
6
7
8
for(...)
new Random(System.currentTimeMillis()).nextInt(); //bad!

!=

Random rnd = new Random(System.currentTimeMillis());
for(...)
rnd.nextInt();


Is ein Fehler den man ziemlich häufig sieht,...

38

Wednesday, February 11th 2009, 1:51pm

Quoted

Original von SenF_Toddi
naja, das muss dann der thread-ersteller entscheiden, welche info ihm jetzt am meisten weitergeholfen hat. ich persönlich finde es gut, dass du das so detailliert beschreibst, allerdings würde ich das eher unter der rubrik "für freaks" einordnen, dem normalen menschen hilft das kein stück weiter.
es ist eben oft nicht die frage "weiß ich etwas" sondern "kann ich etwas beibringen"


So ähnlich siehts wohl aus^^ Als durchschnittlicher Matheschüler der 12. Klasse Gymnasium kann ich Worfs Ausführungen wohl nur sehr bedingt folgen, zumindest solange ich zu faul bin, mich wirklich intensiv damit zu beschäftigen. Trotzdem danke für die Mühe. :) Ich denke der Artikel aus der Welt erklärt ganz gut und für Laien verständlich, wie ein deterministisches Gerät eine (Pseudo-)Zufallszahl erzeugen kann. :up:

Quoted

Original von AtroX_Worf
Wenn ich Wissen wöllte, wie ein Fernseher wirklich funktioniert...


:D

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

39

Wednesday, February 11th 2009, 1:58pm

Quoted

Original von yellow_crush
Ich glaube, ich habs noch immer nicht verstanden. Bitte nochmal beide Konzepte weniger mathematisch erläutern.

Ich meine, wenn ich den gleichen Seed nehme, kommt doch zwangsläufig immer die gleiche Folge an Zahlen, jedes mal wenn ich den Alghoritmus starte.

Welchen Seed nimmt denn der Taschenrechner, der hat ja keine Systemzeit soweit ich weiß?!? Und wie oft wiederholt er den Algorithmus, bis er dann eine "zufällige" Zahl anzeigt?

Ich mache mal ein Spielzeug-Beispiel. Nehmen wir an Die Random-Funktion f hat als Defintionsbereich X die Ziffern 0,1,2,3,4,5,6,7,8,9 und der Funktionswert ist auch wieder eine der Ziffern 0-9. Der Startwert x muss also eine der Ziffern 0-9 sein, dann kommt f(x) mit Wert 0-9 raus. Immwer wenn beispielsweise 2 als Startwert gewählt wird, so kommt 9 heraus, d.h. f(2)=3.
Nehmen wir noch weiter den bestmöglichen Fall an, d.h. dass jeder Startwert auf einen anderen Funktionswert geschickt wird, z.B. f(2)=5 und f(3)=1.
Was ist dann also Zufall bzgl. Gleichverteilung? Wenn man eine Folge von n Zahlen hat, meinetwegen n=1000, dann sollten möglichst alle Ziffern ungefähr 100 mal vorkommen, aber ohne erkennbare Muster. z.B. wäre 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2... nicht zufällig, 100x0, dann 100x1 etc. auch nicht. Auch andere Muster, wie das auf 5 unverhältnis häufig eine 9 folgt darf nicht vorkommen...

Variante 1: Die Random-Funktion f erfüllt genau diese Eigenschaften, d.h. für einen Startwert liefert sie eine Folge von Pseudo-Zufallszahlen. Erst nach 2^19937-1 oder 4,3·10^6001 wiederholt sich die Folge.

Variante 2: Man weiß, dass die Random-Funktion f bei jeder der Ziffern 0-9 genau eine festgelegte Ziffer 0-9 zurück gibt. Wenn ich also nicht die Folge der Ziffern betrachte, sondern immer nur die erste Ziffer zu einem Startwert, dann hat die Funktion f nichts mehr mit Zufälligkeit zu tun. Der entsteht ja erst, weil die Ziffern in keinem "zu kleinem" Muster hintereinander gut durchgemischt sind. Bei Variante 2 wird hängt damit die gesamte "Zufälligkeit" am Startwert. In Wirklichkeit hat man also eine denkbar schlechte Form von Zufälligkeit gewählt und nutzt die Power der Random-Funktion auf keine Weise. Genauso gut wie die richtige Random-Funktion f wäre eine andere Funktion g = (x+1) mod 10.

Quoted

Original von plexiq
Wenn wir schon pingelig sind:
Natürlich kann eine Zahl "für sich alleine" eine Zufallszahl sein, also das Ergebnis eines Zufallsexperiments. Das wir die Zahl für sich alleine nicht statistisch auf Zufälligkeit testen können tut da eigentlich nix zur Sache?

Mathematisch ist eine Zufallsvariable eine Abbildung vom Ausgangs eines "Zufallsxperimentes" in einen anderen Messraum, z.B. X : (Ergebnismenge, sigma-Ereignisalgebra) -> (IR, B(IR)).
Allerdings weißt du ja von vornherein, dass deine Zahl f(x) nicht als Ereignis eines Zufallsexperiments zustande kam, sondern rein deterministisch (wenn du nicht die Verteilung der Startwerte untersuchst :D). Von daher finde ich, dass man in diesem Kontext eine Zahl für sich nicht als zufällig bezeichnen kann. Es ist auch methodisch falsch, wir wollen ja gerade Zufall erzeugen, und nicht etwas von vornherein als Zufall klassifizieren.
Man geht also gedanklich den anderen Weg und fragt sich, wann man eine deterministisch erzeugte Folge von Zahlen als zufällig ansehen kann => man versucht Evidenz für die statistische Hypothese, dass die Folge einem Muster folgt, zu finden. Findet man keien Evidenz dafür, dann kann man weiterhin getrost "annehmen", die Folge sei zufällig erzeugt. letzlich zählt ja nur die Qualität der Folge bei Zufallstests und nicht, wie sie tatsächlich erzeugt wurde. Unterschied klarer gewurden?

Quoted

Original von plexiq
Ansonsten hast du aber schon recht, finds durchaus wichtig drauf hinzuweisen das die folgenden Codesnips ***nicht*** ident sind.
...
Is ein Fehler den man ziemlich häufig sieht,...

Ja thx, darauf will ich u.a. hinaus. Nicht der seed macht die Zufälligkeit, sondern erst die Folge zu einem seed selbst. Ansonsten bekomme ich nur rein die Zufälligkeit meines seeds zurück gegeben, ohne eine qualitative Verbesserung.

-=)GWC(RaMsEs

Unregistered

40

Wednesday, February 11th 2009, 2:01pm

Vielleicht wollte worf, nachdem ich in seinem bwl gebiet zuviel geschrieben habe nun mich auf meinem It gebiet zurechtweisen.

Anyway, ich glaube es kam rüber was ich sagen wollte, wer eine ganz genaue abhandlung darüber haben möchte dem empfehle ich einschlägige fachliteratur.

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

41

Wednesday, February 11th 2009, 2:06pm

Quoted

Original von -=)GWC(RaMsEs
Vielleicht wollte worf, nachdem ich in seinem bwl gebiet zuviel geschrieben habe nun mich auf meinem It gebiet zurechtweisen.

Wieso werden mir nur persönliche Motive unterstellt? Ich wollte es ganz einfach berichtigen, dann sind nur immer mehr, mit oftmals ungenauen bis falschen Aussagen, darauf angesprungen.

Posts: 8,654

Location: Köln

Occupation: GER

  • Send private message

42

Wednesday, February 11th 2009, 2:08pm

Sei nicht betroffen worf, ich hab das meiste gar nicht gelesen. Mir ist allerdings klar dass die Zufälligkeit nur aus dem Startwert kommt, und das was ich in meinem Post geschrieben hab bestätigt das nur. Weiß nicht was du da reininterpretierst.

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

43

Wednesday, February 11th 2009, 2:08pm

Quoted

Original von GEC|Napo
Mir ist allerdings klar dass die Zufälligkeit nur aus dem Startwert kommt, und das was ich in meinem Post geschrieben hab bestätigt das nur. Weiß nicht was du da reininterpretierst.

ähm......... X( ????!!!!!!

This post has been edited 2 times, last edit by "AtroX_Worf" (Feb 11th 2009, 2:09pm)


44

Wednesday, February 11th 2009, 2:09pm

Damit ist das im Welt Artikel erklärte Beispiel eines für Variante 2, oder?! Glaub, ich habs verstanden. Bleibt die Frage mit der Anzahl der Wiederholungen, da man ja und vor allem der Art der Startwerte.Weil die der Taschenrechner eben nicht würfeln kann. Und selbst da nur eine begrenzte kleine Anzahl von Möglichkeiten besteht.

Wie wird in Fall eins die Unabhängigkeit vom Startwert hergestellt? Denn man sollte ja bei Variante eins stets den selben Startwert verwenden können und dennoch zu anderen Abfolgen zufälliger Zahlen gelangen...

Posts: 8,654

Location: Köln

Occupation: GER

  • Send private message

45

Wednesday, February 11th 2009, 2:12pm

Quoted

Original von AtroX_Worf
also speziell jeglicher "Zufall" schon aus dem Startwert kommen muss. :(

Du schreibst doch dasselbe? Oder steht in dem ganzen langen Beiträgen irgendwo dass es nicht so ist? Was heißen würde, dass man einen Algorithmus hat, der bei dem selben Input verschiedene Outputwerte generieren kann?

46

Wednesday, February 11th 2009, 2:15pm

So hab ich seine variante 1 verstanden...

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

47

Wednesday, February 11th 2009, 2:21pm

Quoted

Original von yellow_crush
Damit ist das im Welt Artikel erklärte Beispiel eines für Variante 2, oder?! Glaub, ich habs verstanden. Bleibt die Frage mit der Anzahl der Wiederholungen, da man ja und vor allem der Art der Startwerte.Weil die der Taschenrechner eben nicht würfeln kann. Und selbst da nur eine begrenzte kleine Anzahl von Möglichkeiten besteht.

Wie wird in Fall eins die Unabhängigkeit vom Startwert hergestellt? Denn man sollte ja bei Variante eins stets den selben Startwert verwenden können und dennoch zu anderen Abfolgen zufälliger Zahlen gelangen...

Genau, Variante 1 ist im Welt-Artikel Variante 2. Variante 2 beschreibt die Grundformel, nach der heutige Pseudo-Zufallszahlengeneratoren arbeiten. Die Zufälligkeit (oder besser die Eigenschaft, dasas die Folge kaum Muster aufweißt) kommt eben nicht aus dem Startwert, sondern aus dem Algorithmus selbst. Variante 1 im Welt-Artikel ist meine Variante 2.
Hat man einmal einen Startwert gewählt, dann erzeugt f(x) eine feste Folge. Die letzte Zufallszahl ist quasi wieder der neue Startwert. Sow rid mathematisch sicher gestellt, dass wirklich nur minimale Muster in der Folge sind, bzw. sich die Muster erst nach extrem langer Zeit (4,3*10^6001 Zufallszahlen) wiederholen.
Unabhängigkeit vom Startwert existiert im engeren Sinne nicht, oder du musst es definieren.
Wenn du beispielsweise bei einem Taschenrechner den Startwert nicht zufällig (Batterieladestand, Spannung über Solarzelle, Eingabewert) vorgibst sondern immer einen gleichen Startwert wählst und beispielsweise den Zufallszahlengenrator heute und morgen einmal komplett neu startest, so kommt immer die gleiche Folge heraus.
Es ist ein gedankenfehler zu denken, wenn heute eine andere Folge heraus kommt als morgen, dann wäre der Generator "zufälliger". Ich habe ja oben beschrieben, wie man die Qualität von Zufall messen kann.
Will man bei jedem Start des Zufallszahlengenerators eine neue, unterschiedliche Folge von Zahlen und kann sich der Taschenrechner überhaupt nichts merken (letzte Zufallszahl) und hat keinen Zugriff auf einen Startwert, außer man gibt einen ein, so kann er prinzipiell keinen Zufall erzeugen.

@Napo: Man merkt, dass du quasi ncihts durchgelesen hast. Ich hatte in dem letzten Satz genau das beschrieben, was falsch war - und du anscheinend nur wiederholt hattest. :D

Quoted

Original von GEC|Napo

Quoted

Original von AtroX_Worf
also speziell jeglicher "Zufall" schon aus dem Startwert kommen muss. :(

Du schreibst doch dasselbe? Oder steht in dem ganzen langen Beiträgen irgendwo dass es nicht so ist? Was heißen würde, dass man einen Algorithmus hat, der bei dem selben Input verschiedene Outputwerte generieren kann?

Natürlich nicht, dann wäre es keine Funktion mehr, da nicht mehr rechtseindeutig. Glaube du musst doch etwas mehr lesen. ^^
Der Zufall kommt aus dem Algorithmus, speziell also erst aus der Folge zu einem Startwert. Wenn ich immer nur f(x) mit jeweils anderen Startwerten nehme, dann bekomme ich entweder eine Injektion, Bijektion oder Surjektion (immer, da Einschränkung aufs Bild), je nach Bildraum. Die Zufälligkeit ist also eine Eigenschaft der Folge, wenn man es "laufen lässt", nicht das Ergebnis vom Startwert.

This post has been edited 2 times, last edit by "AtroX_Worf" (Feb 11th 2009, 2:27pm)


Posts: 4,554

Location: GER

Occupation: GER

  • Send private message

48

Wednesday, February 11th 2009, 2:25pm

also ich muss mal einwerfen, dass mir worfs (zugegeben lange) ausführungen sehr wohl als sinnvoll und auch angebracht vorkommen. davon abgesehen sind sie auch nicht minder interessant und führen die überlegungen des threads weiter. ergo würde ich vorsichtig sein, ihm hier gleich virtuellen schwanzvergleich unterstellen zu wollen - er kennt sich halt gut aus und will nur ein paar dinge klarstellen, die für ihn noch nicht klar genug dargestellt wurden.
imo völlig gerechtfertigt guys...no need da gleich persönlich zu werden.
so far :)
MfG

Posts: 8,654

Location: Köln

Occupation: GER

  • Send private message

49

Wednesday, February 11th 2009, 2:27pm

Habe mir dein letztes Post ganz durchgelesen und sehe darin immer noch eine Bestätigung meiner Aussage.

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

50

Wednesday, February 11th 2009, 2:30pm

Quoted

Original von yellow_crush
So hab ich seine variante 1 verstanden...

Sorry, falls du gerade meinen beitrag drüber schon gelesen haben solltest. Ich hatte da Variante 1 und 2 einmal durcheinander gebracht, habe es aber jetzt berichtigt, hoffe ich. :P
Variante 1 ist das laufenlassen der Variante 2 aus dem Welt-Artikel.
Variante 2 ist ein dach nur das immer-wieder-starten mit einem neuen Startwert, siehe plexiq's Code. Weil Zufälligkeit erst in der Abfolge entsteht und eine Funktion eine feste Zuordnungsvorschrift darstellt, bekomme ich bei Variante 2 genau die Zufälligkeit des Startwertes durchgereicht, also vor allem keine Zufällgikeit im Computeralgorithmischen Sinne, nach der in diesem Thread eingangs gefragt wurde.
Also nochmal sorry @yellow_crush, lies es ggfs. nochmal.

Quoted

Original von GEC|Napo
Habe mir dein letztes Post ganz durchgelesen und sehe darin immer noch eine Bestätigung meiner Aussage.

Aber siehst du auch, dass diese Aussage von dir falsch ist?

Quoted

Original von GEC|Napo
Mir ist allerdings klar dass die Zufälligkeit nur aus dem Startwert kommt,...

Man müsste schon sehr spitzfindig argumentieren, aber die eigentliche Quelle für den Zufall ist der Algorithmus selbst und nicht der Startwert.

This post has been edited 1 times, last edit by "AtroX_Worf" (Feb 11th 2009, 2:32pm)


Posts: 8,654

Location: Köln

Occupation: GER

  • Send private message

51

Wednesday, February 11th 2009, 2:36pm

Du hast einfach nur ein seltsames Verständnis von Zufall. Bei gleichem Startwert wird die selbe Folge generiert. Also ist es nicht zufällig. Bums aus Nikolaus!

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

52

Wednesday, February 11th 2009, 2:39pm

Quoted

Original von GEC|Napo
Du hast einfach nur ein seltsames Verständnis von Zufall. Bei gleichem Startwert wird die selbe Folge generiert. Also ist es nicht zufällig. Bums aus Nikolaus!

Ja klar, aber es geht ja hier um Pseudo-Zufallszahlen in einem statistischen Sinne, nicht einem pur mathematischen. Sonst kannst du ja mit einem Computer nie Zufalls erzeugen, der nicht durch den Startparameter in die Funktion kommt. :P
Zuällig ist eine Folge dann, wenn es keine Evidenz gibt eine (statistische) Hypothese anzunehmen, welche der Folge ein Muster nachweist, also insbesondere Zufälligkeit abspricht.

Natürlich gibt es ein Muster, die Periodenlänge ist eint triviales Beispiel. Deswegen erzeugt ein Computer ja auch keine echten Zufallszahlen, sondern Pseudo-Zufallszahlen. Darauf wurde aber genügeng hingewiesen, auch von mir. :P

This post has been edited 1 times, last edit by "AtroX_Worf" (Feb 11th 2009, 2:40pm)


53

Wednesday, February 11th 2009, 2:40pm

OK, eine frage:

angenommen ich betreibe eine Pokerseite.

Diese Pokerseite verlaesst sich auf einen Pseudozufallzahlenalgorithmus wie er in Java vorhanden ist. Nehmen wir an, dieser Algorithmus besteht stochastische Tests (d.h. ein Startwert und die entstehende Folge ist "zufaellig" genug und "gleichverteilt" genug)


Nehmen wir weiter an, der Algorithmus wird nur einmal initialisiert.

Weitere Annahme: massive rechenkraft auf der Clientseite.

Annahme: man ahnt, wann ungefaehr der Algorithmus initialisiert wurde.


D.h. jetzt ist es eine reine Brute Force Aufgabe, aus den Werten, die man durch das anschauen der ausgeteilten nicht verdeckten Karten den Startwert zu ermitteln.
Hat man diesen kann man die zukuenftigen Werte auch ermitteln.

So aehnlich geschehen(natuerlich max. trivialisiert und vereinfacht von mir und viele Annahmen wurde getroffen die nicht unbedingt realitaetsnah sind) auf einer kleinen Pokerseite die sich auf den Pseudzufallsalgorithmus von Delphi verlassen hat.

Frage: Wenn wir davon ausgehen, dass die Ergebnisse "zufaellig" genug sind, so ist der Algorithmus trotzdem im wesentlichen vom Startwert abhaenig, oder? D.h. wenn ein anderer mit dem gleichen Startwert die gleichen Zahlenfolgen erzielt, so ist der Zufall doch in Frage gestellt.



Es gibt ja mittlerweile so Karten, die z.B. auf kosmische strahlen reagieren, die ja zufaellig sind. Wenn man das hinkriegt dass das auch noch gleichverteilt ist, so ist dies z.B. eine gute Loesung.

plexiq

Professional

Posts: 1,512

Location: Wien

  • Send private message

54

Wednesday, February 11th 2009, 2:44pm

Bei all dem überflüssigem Formulierungs-Wahn in diesem Thread muss ich Napo trotzdem zustimmen: Worf verwendet Zufall/Zufälligkeit oft ziemlich verwirrend/unintuitiv.

55

Wednesday, February 11th 2009, 2:47pm


Posts: 8,654

Location: Köln

Occupation: GER

  • Send private message

56

Wednesday, February 11th 2009, 2:52pm

Okay was du meinst würde ich etwa so ausdrücken:
Der Algorithmus erzeugt aus einem nahezu zufälligen Startwert eine Folge von nahezu gleichverteilten Zahlen auf einem Intervall.

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

57

Wednesday, February 11th 2009, 2:59pm

Quoted

Original von MaxPower
Nehmen wir weiter an, der Algorithmus wird nur einmal initialisiert.
Weitere Annahme: massive rechenkraft auf der Clientseite.
Annahme: man ahnt, wann ungefaehr der Algorithmus initialisiert wurde.
D.h. jetzt ist es eine reine Brute Force Aufgabe, aus den Werten, die man durch das anschauen der ausgeteilten nicht verdeckten Karten den Startwert zu ermitteln.

Meinst du für ein Spiel oder für die gesamte Seite? Bei letzterem ist ja prinzipiell nicht zu beobachten, wo man sich in der Sequenz befindet.
Rein praktisch ist es unmöglich, mit brute Force sowas auszurechnen. Anders ausgedrückt: Wenn du den Zufallszahlengenerator öfters neu startest dann hast du mehr Artefakte in deinen Zufallszahlen, um damit Muster zu entdecken (wir spreche hier sicher von einem Faktor 10^500 mindestens, eher höher), als wenn du die Folge einfach weiter laufen lässt.
Wenn man sehr genau an welcher Stelle in der Folge man sich befindet (präzissere Annahme als Startzeit zu kennen), dann könnte man eventuell auf den Algotihmus kommen. Trotzdem müsstest du dann zu allen möglichen 2^32 Startwerten alle Folgenglieder bis zum jeweils erreichten berechnen. Glaube das ist nciht so einfach möglich, bzw. man hat vorher einfach "Glück". Im Schnitt müsste man erst 2^16 Folgen berechnen, bis man die richtige findet.
Geht vielleicht noch besser, kenne mich bei Kryptografie nicht wirklich gut aus - aber rein praktisch musst du dir da überhaupt keine Sorgen machen.

Quoted


Frage: Wenn wir davon ausgehen, dass die Ergebnisse "zufaellig" genug sind, so ist der Algorithmus trotzdem im wesentlichen vom Startwert abhaenig, oder? D.h. wenn ein anderer mit dem gleichen Startwert die gleichen Zahlenfolgen erzielt, so ist der Zufall doch in Frage gestellt.

Zufälligkeit ist eine statistische Eigenschaft der Folge und ändert nichts um grundsätzlichen Determinismus.

Quoted


Es gibt ja mittlerweile so Karten, die z.B. auf kosmische strahlen reagieren, die ja zufaellig sind. Wenn man das hinkriegt dass das auch noch gleichverteilt ist, so ist dies z.B. eine gute Loesung.

Es gibt einfach Tabellen, wo kosmische Hintergrundstrahlung tabelliert wurde. Die kann man auch einfach einlesen, anstatt einen Pseudo-Zufallszahlengenerator zu verwenden.
Es sollte aber algorithmisch sehr einfach sein Zufall so zu erzeugen, dass er mit so einfachen Tricks nciht mehr raus zu bekommen ist. Am wichtigsten ist natürlich erst einmal ein vernünftiger und moderner Zufallszahlengenerator, vielleicht dazu auch etwas mehr mit Generatoren für Kryptografie beschäftigen. Man kann den generator ja auch mit einem zweiten inialisieren, den man mit der Systemzeit initialisiert (dagegen spricht ja ncihts, sofern ich nicht immer wieder neu initialisiere). Ich brauche erst einmal eine möglichst gleichmäßige Surjektion von der Systemzeit auf alle Startwerte, so, dass ich selbst nichts darüber weiß. Dann kann man damit initalisieren, und niemand kann mit dem Wissen über die Zeit oder sonstwas Bereiche knacken.
Im Übrigen müsste er dafür auch die ganzen Folgen ausgeschrieben wissen und schnell durchsuchen können, ist auch nicht möglich.
Ich sehe da keine reelle Gefahr, vor allem hat man ja beim Pokern keine Beobachtungen, die in die Billiarden gehen sondern allerhöchstens eine Million.

@plexiq: Wenn es einmal klar ist, auf welche Art von Zufall ich abstelle finde ich nicht, dass es dann noch intuitiv ist. Habe dir ja eine mathematische Beschreibung geliefert, wieso ich deine Anmerkung dazu nicht sehr hilfreich fand. Kritik dazu?

plexiq

Professional

Posts: 1,512

Location: Wien

  • Send private message

58

Wednesday, February 11th 2009, 3:05pm

Napo, was er meint ist:
Der Algorithmus erzeugt abhängig von einem Seed eine Zahlenfolge die bestimmte Eigenschaften erfüllt. Die generierten Zahlenfolgen sind so aufgebaut dass sie möglichst viele Kriterien einer "echten" Zufallsfolge erfüllen.

Wenn wir den Algorithmus allerdings jedes mal mit der Systemzeit seeden und dann nur den ersten Wert verwenden, wird die entstehende Folge diese Kriterien *nicht* erfüllen.

@Worf:
Ich fand deine Formulierung zu allgemein, und nicht auf diesen Kontext eingeschränkt. Ziemlich unpräzise halt, was mich eigentlich net störn würde. Aber ich find du stellst hier gegenüber anderen etwas zu hohe Ansprüche bzgl. Formulierungs-Präzision, während du selbst teilweise ziemlich unpräzise/vereinfacht formulierst. Wir sind hier nicht in ner Mathe/Statistik Klausur. Ich wollt eigentlich auf nix anderes hinaus. Dass du mir daraufhin mit der Definition von Zufallsvariablen antwortest hat nen gewissen Komik-Faktor.

This post has been edited 3 times, last edit by "plexiq" (Feb 11th 2009, 3:15pm)


59

Wednesday, February 11th 2009, 3:07pm

Das Wort "seeden" macht die Diskussion gleich viel professioneller...

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

60

Wednesday, February 11th 2009, 3:07pm

Quoted

Original von GEC|Napo
Okay was du meinst würde ich etwa so ausdrücken:
Der Algorithmus erzeugt aus einem nahezu zufälligen Startwert eine Folge von nahezu gleichverteilten Zahlen auf einem Intervall.

Jo. Der entscheidende Punkt ist die Qualität, die die der Verteilung des Startwertes um Welten übertrifft.

Quoted

Original von plexiq
Napo, was er meint ist:
Der Algorithmus erzeugt abhängig von einem Seed eine Zahlenfolge die bestimmte Eigenschaften erfüllt. Die generierten Zahlenfolgen sind so aufgebaut dass sie möglichst viele Kriterien einer "echten" Zufallsfolge erfüllen.

Wenn wir den Algorithmus allerdings jedes mal mit der Systemzeit seeden und dann nur den ersten Wert verwenden, wird die entstehende Folge diese Kriterien *nicht* erfüllen.

exakt

Quoted

Original von plexiq
@Worf:
Ich fand deine Formulierung zu allgemein, und nicht auf diesen Kontext eingeschränkt. Ziemlich unpräzise halt, was mich eigentlich net störn würde. Aber ich find du übertreibst es ein wenig bzgl. der Präzision die du bzgl der Formulierungen anderer forderst, während du selbst teilweise ziemlich unpräzise/vereinfacht formulierst. Ich wollt eigentlich auf nix anderes hinaus. Dass du mir daraufhin mit der Definition von Zufallsvariablen antwortest hat nen gewissen Komik-Faktor.

Ich habe dir damit geantwortet, weil ich nicht richtig fand, wenn du in diesem Kontext sagst man könnte eine Zahl alleine als Zufallszahl auffassen. Das ist ja eben nciht der Fall, weil die Prämissen (möglicher Ausgang eines Zufallsexperimentes) nicht gegeben sind. Deswegen hatte mich die Antwort verwundert und ich dachte ich komme einfach mal mit der Definition, da man an der am einfachsten sieht, dass sie hier nicht zutrifft.
Natürlich schreibe ich normalerwesie von Zufallszahlen und nicht jedes mal von Pseudo-Zufallszahlen. Man kann Notation auch überfrachten, aus den Kontext wird imho sehr gut klar, was gerade gemeint ist. Wer da mehr Wissen hat, versteht es aus dem Kontext sowieso, wer weniger Wissen hat wird sonst nur verwirrd.
Natürlich formuliere ich vereinfacht! Wenn ich ein paar Fachwörter verwende, dann verstehen es manche nicht, die es aber auch verstehen sollen und ich muss es noch einmal ohne Fachwörter erklären. Aber wenn du den Sachverhalt besser ohne mathematische Fachwörter erklären kannst, nur zu. ^^

Quoted

Original von [pG]fire_de
Zu der Pokerseite...http://www.cigital.com/news/index.php?pg=art&artid=20

Sehr nice. :D
Problem war, dass der Zufallszahlengenrator nicht gleichverteilt einen Startwert bekommen hatte, sondern nur aus einem kleinen Intervall. Wenn man den Startwert sagen wir bis auf 1 Million bestimmen kann (+/- 500 Sekunden), so braucht man ja nur 1 Million mal die ersten sagen wir 50 Zahlen ziehen lassen und in den ersten Runden abgleichen. nach nen paar Runden hat man dann das Ergebnis.
Aber es wurde ja auch sehr einfach gemacht, weil man genau den Algorithmus wusste, nach dem jeder Zufallszahl die Karte zugeordnet wird. Wenn du das nicht weißt, dann ist es megaschwer da inferenzmäßig drauf zu schließen. Zusätzlich zur Unsicherheit über die Zufallsfolge musst du ja noch auf die Bijektion zwischen Zufallszahlen und Karten schließen, das potenziert die Möglichkeiten noch einmal! Man weiß ja nicht, ob nur jede 3. Zufallszahl verwendet wird doer in welcher Reihenfolge etc.

This post has been edited 3 times, last edit by "AtroX_Worf" (Feb 11th 2009, 3:21pm)