Auflösung des Zufallsgenerators
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Auflösung des Zufallsgenerators
Wie groß ist eigentlich das Auflösungsvermögen des Zufallsgenerators und wodurch wird dieses evtl. beeinflusst? Kann man bei Random(300000) noch davon ausgehen, dass alle Zahlen von 1 bis 300000 mit gleicher Wahrscheinlichkeit gezogen werden können?
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Auflösung des Zufallsgenerators
--> http://en.wikipedia.org/wiki/Mersenne_twister" onclick="window.open(this.href);return false;
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Auflösung des Zufallsgenerators
Möchtest du mir damit sagen, dass der Zufallsgenerator von Freepascal plattformunabhängig gleich und nach dem Mersenne-Twister Verfahren arbeitet? Dann gibt es da offenbar noch mehrere Varianten davon...
Irgendwie beantwortet das nicht meine eigentliche Frage. Irgendwo in dem Text hab ich gelesen, dass es eine Variante mit voller 32bit-Auflösung gibt. Es ist aber auch kein einziges Wort über den fpc gefallen.
Irgendwie beantwortet das nicht meine eigentliche Frage. Irgendwo in dem Text hab ich gelesen, dass es eine Variante mit voller 32bit-Auflösung gibt. Es ist aber auch kein einziges Wort über den fpc gefallen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Auflösung des Zufallsgenerators
Lazarus hat da ein hervorragendes Feature: Strg+LinksKlick mal auf "Random" ... 

-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Auflösung des Zufallsgenerators
Es ist halt ein Zufall. Du kannst nicht davon ausgehen das jede Zahl einmal gezogen wird. Einige werden bevorzugt z.b. die sieben *G*. Du musst selbst eine Liste erstellen mit den gezogen Werten wenn du alle Zahlen von n bis x haben möchtes. Daher kann man nicht mit "gleicher Wahrscheinlichkeit" rechnen.dass alle Zahlen von 1 bis 300000 mit gleicher Wahrscheinlichkeit gezogen werden können?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Auflösung des Zufallsgenerators
@Hitman: Ich weiß, wie man sich die Implementierung einer Funktion ansehen kann. Ich stelle nun fest, dass dabei offenbar auf keinerlei Betriebssystemfunktionalität zurückgegriffen wird (was ich vermutet hätte), sondern alles direkt implementiert ist. Ich kann/will allerdings weder der Implementierung des Algorithmus so genau folgen, dass ich mir das selbst herleiten kann. Was da tatsächlich warum passiert, interessiert mich auch nicht wirklich. Ich kann mir aus dem Code allein nicht herleiten, ob Random nun über 32bit oder gar 64bit eine Gleichverteilung liefert.
@pluto: gleiche Wahrscheinlichkeit und Gleichverteilung sind Begrifflichkeiten aus der Wahrscheinlichkeitstheorie, die besagen, dass jeder Wert aus dem Universum mit der gleichen Wahrscheinlichkeit auftreten kann. Ein idealer Würfel würfelt zum Beispiel jede Zahl mit der gleichen Wahrscheinlichkeit. Das heißt nicht, dass jede Zahl genauso oft fällt, sondern lediglich, dass bei unendlich vielen Würfen jede Zahl etwa gleich oft fällt und nicht die 6 doppelt so oft wie die 1. Dabei kann es bei abzählbar vielen (oder: wenigen) Würfen durchaus vorkommen, dass 3x die 6 nacheinander fällt, bei einem sechsflächigen Würfel entspricht dieser Fall einer Wahrscheinlichkeit von (1/6)^3 = 1/216 = rund 0,463%, also ziemlich unwahrscheinlich, aber möglich.
Meine Frage ist also: Kann Random wirklich eine Gleichverteilung über die gesamten 32 oder 64 bit liefern, oder werden da bestimmte Werte mit geringerer Wahrcheinlichkeit auftreten? Ein Ja reicht mir als Antwort, bei einem Nein würde ich mich über eine einfache Auflistung der Einschränkungen freuen. Ein Test an nur einem Computer/ einem Betriebssystem etc. wäre nicht unbedingt wasserdicht, daher die Frage.
Ich kann mich an die Anfänge meiner Programmiertätigkeit erinnern, da hat mal ein Freund in TurboPascal aus Jux ein Programm geschrieben, das auf dem Grafikbildschirm folgendes Programm geschrieben hat:
Diesem Programm haben wir dann zugesehen (damals waren die Rechner noch so langsam!) und nach ein paar Minuten war ein immer wiederkehrendes Muster erkennbar. Man hat mir damals gesagt, dass das mit der Generierung der Zufallszahlen zu tun hat, die sich unter anderem auf die Uhrzeit stützt und nun mit der immergleichen Schleife im Programm (immergleicher zeitlicher Abstand zwischen 2 Zufallszahlengenerierungen) Effekte auftreten lässt, so dass diese Muster entstehen. Heute kann ich mir denken, dass das vielleicht eher damit etwas zu tun hat, dass rechnergenerierte Zufallszahlen nur Pseudo-Zufallszahlen sind. Was das aber genau heißt, weiß ich nicht.
@pluto: gleiche Wahrscheinlichkeit und Gleichverteilung sind Begrifflichkeiten aus der Wahrscheinlichkeitstheorie, die besagen, dass jeder Wert aus dem Universum mit der gleichen Wahrscheinlichkeit auftreten kann. Ein idealer Würfel würfelt zum Beispiel jede Zahl mit der gleichen Wahrscheinlichkeit. Das heißt nicht, dass jede Zahl genauso oft fällt, sondern lediglich, dass bei unendlich vielen Würfen jede Zahl etwa gleich oft fällt und nicht die 6 doppelt so oft wie die 1. Dabei kann es bei abzählbar vielen (oder: wenigen) Würfen durchaus vorkommen, dass 3x die 6 nacheinander fällt, bei einem sechsflächigen Würfel entspricht dieser Fall einer Wahrscheinlichkeit von (1/6)^3 = 1/216 = rund 0,463%, also ziemlich unwahrscheinlich, aber möglich.
Meine Frage ist also: Kann Random wirklich eine Gleichverteilung über die gesamten 32 oder 64 bit liefern, oder werden da bestimmte Werte mit geringerer Wahrcheinlichkeit auftreten? Ein Ja reicht mir als Antwort, bei einem Nein würde ich mich über eine einfache Auflistung der Einschränkungen freuen. Ein Test an nur einem Computer/ einem Betriebssystem etc. wäre nicht unbedingt wasserdicht, daher die Frage.
Ich kann mich an die Anfänge meiner Programmiertätigkeit erinnern, da hat mal ein Freund in TurboPascal aus Jux ein Programm geschrieben, das auf dem Grafikbildschirm folgendes Programm geschrieben hat:
Code: Alles auswählen
wähle zufälligen Pixel
tue bis abbruch:
färbe aktuellen Pixel in zufälliger Farbe
wähle einen zufälligen benachbarten Pixel als neuen aktuellen Pixel
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Auflösung des Zufallsgenerators
Random liefert legendlich zahlen zwischen 0 und 1. Wenn du einen Parameter angibst sucht er sich eine Zahl aus zwischen 0 und X. Dabei kommen Theoretisch alle Zahlen vor, die diesen Zahlenraum betreffen. Jedoch nur Theoretisch. Unter Windows ist mir aufgefallen das bestimmte zahlen bevorzugt werden. Welche das waren weiß ich nicht mehr. Teste es doch mal unter Lazarus. Einmal den Zufalls Generator Inisiieren und dann in einer Forschleife Random aufrufen. Sollte man zwar nicht machen, weil dann die Wahrscheinlichkeit fällt, zufällige Zahlen zu erhalten, jedoch kannst du ja ein Sleep(10) einbauen. Weil Random basiert auf die Zeit die seit dem System Start vergangen ist.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Auflösung des Zufallsgenerators
Weißt du das sicher? Oder stammt diese Info noch aus TP-Zeiten, wie bei mir? Im Quelltext ist nämlich keinerlei Zeitabfrage erkennbar. Da aber der Quelltext nicht sooo übersichtlich ist, dass man diese Sachen alle problemlos und sicher nachvollziehen kann, würde ich das gerne von jemandem erfahren, der sich damit schon beschäftigt hat.pluto hat geschrieben:Weil Random basiert auf die Zeit die seit dem System Start vergangen ist.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Auflösung des Zufallsgenerators
Wenn du so fragt: Sicher bin ich mir natürlich nicht, nur habe ich in einem Java Buch mal gesehen, dass es dort mit der System Zeit gemacht wird. Unter Delphi wird es meine ich auch so gemacht.Weißt du das sicher?
Für was möchtest du den Random verwenden ?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Auflösung des Zufallsgenerators
Es interessiert mich einfach mal.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Auflösung des Zufallsgenerators
Jain ... Randomize nutzt GetTickCount als (initiales) RandSeed.pluto hat geschrieben:Weil Random basiert auf die Zeit die seit dem System Start vergangen ist.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Auflösung des Zufallsgenerators
und was macht GetTickCount ? Richtig, GetTickCount gibt die Zeit in MS zurück seit das System gestartet wurden ist.Jain ... Randomize nutzt GetTickCount als (initiales) RandSeed.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Auflösung des Zufallsgenerators
Ja, aber das betrifft nur die Initialisierung (Randomize) und nicht die spätere Pseudozufallszahlengenerierung (Random).
Anders gesagt: die Systemzeit bestimmt den Startwert, hat aber keine Einfluss auf die späteren Schritte.
Anders gesagt: die Systemzeit bestimmt den Startwert, hat aber keine Einfluss auf die späteren Schritte.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Auflösung des Zufallsgenerators
Einer konnte dank einer Datenbank die Zahlen-Reihen die Random liefert vorhersagen. Ich glaube das war einer aus der DP. Also ist das doch kein wirklicher Zufall.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Auflösung des Zufallsgenerators
Warum hab ich wohl Pseudozufallszahlen gesagt?
Es gibt keinen wirklichen Zufall mit unserer Rechentechnik - es ist nunmal alles berechenbar. Man kann lediglich den Aufwand in die Höhe treiben. Aber es bleibt Pseudozufall.
