Als Informatik noob interessiert es mich schön seit längerem wie ein Zufallsgenerator denn eine zufällige Zahl erzeugt, wenn mir also jemand helfen könnte wäre ich ihm zu dank verbunden.
Als Informatik noob interessiert es mich schön seit längerem
wie ein Zufallsgenerator denn eine zufällige Zahl erzeugt,
wenn mir also jemand helfen könnte wäre ich ihm zu dank
verbunden.
Zunächst eine wichtige Unterscheidung:
Es gibt Pseudozufallszahlen und echte Zufallszahlen. Pseudozufallszahlen werden durch mathematische Algorithmen meist rekursiv erzeugt. In der Praxis ist das eine Funktion f(x), bei der schon geringe Veränderungen von x enorme Veränderungen des Funktionswertes hervorrufen. Gleichzeitig muß gewährleistet sein, daß nach sehr vielen Rekursionen der gesamte Wertebereich gleichmäßig abgedeckt ist, und keine Häufungen auftreten. Wie diese Funktionen genau aussehen, weiß Google.
Echte Zufallszahlen kommen dagegen aus externen Quellen. Das können zB die letzten paar Stellen der Systemzeit bei einem Tastenanschlag des Benutzers, oder einem Festplattenzugriff sein.
LG
Stuffi
In der Praxis ist das eine Funktion
f(x), bei der schon geringe Veränderungen von x enorme
Veränderungen des Funktionswertes hervorrufen. Gleichzeitig
muß gewährleistet sein, daß nach sehr vielen Rekursionen der
gesamte Wertebereich gleichmäßig abgedeckt ist, und keine
Häufungen auftreten. Wie diese Funktionen genau aussehen, weiß
Google.
Rekursiv???
Echte Zufallszahlen kommen dagegen aus externen Quellen. Das
können zB die letzten paar Stellen der Systemzeit bei einem
Tastenanschlag des Benutzers, oder einem Festplattenzugriff
sein.
cool, habe ich mir auch so gedacht. Vielen Dank auch.
Rekursiv???
Rekursiv heißt, daß das Ergebnis immer wieder als Ausgangswert in die Funktion eingesetzt wird:
zB: Startwert (gewählt): 2; f(2)=5; f(5)=7; f(7)=1; f(1)=…
dh, das n+1te Element wird über das nte berechnet
LG
Stuffi
Hallo,
Rekursiv???
Rekursiv heißt, daß das Ergebnis immer wieder als Ausgangswert
in die Funktion eingesetzt wird:
zB: Startwert (gewählt): 2; f(2)=5; f(5)=7; f(7)=1; f(1)=…
dh, das n+1te Element wird über das nte berechnet
Die Pseudozufallsgeneratoren haben auch noch den Nachteil, dass sie sich irgendwann wieder wiederholen. Man hat also eigentlich eine Reihe von Zahlen.
in den meisten Programmiersprachen gibt es 2 verschiene Möglichkeiten den Startwer vorzugeben:
-
Der Startwert wird z.B. aus einem Systemtimer berechnet. Somit beginnt die Reihe bei jedem Programmstart an einem anderen Punkt.
-
Man kann immer mit dem gleichen Startwert beginnen. Dies wird vor allem benutzt um verschiedene Programmversionen reproduzierbar zu testen.
MfG Peter(TOO)
Alles klar, danke.
Prost
Rekursiv???
Rekursiv heißt, daß das Ergebnis immer wieder als Ausgangswert
in die Funktion eingesetzt wird:
zB: Startwert (gewählt): 2; f(2)=5; f(5)=7; f(7)=1; f(1)=…
dh, das n+1te Element wird über das nte berechnet
Das nennt man „iterativ“, weil die Zwischenergebnisse bereits als
Zufallszahlen verwendet werden.
Das obengenannte ist eine Reihe und somit iterativ.
Rekursiv würde bedeuten, daß die Zwischenergebnisse noch nicht
verwendet werden, sondern erst des letzte Ergebnis - das Endergebnis.
Ich bin mir nicht sicher, ob diese Definition „rekursiv“ richtig ist.
Aber das obengenannte ist definitiv „iterativ“.
Vielleicht schließen sich „rekursiv“ und „iterativ“ auch garnicht aus.
So genau weiß ich das auch nicht.
Gruß
Thorsten
Als Informatik noob interessiert es mich schön seit längerem
wie ein Zufallsgenerator denn eine zufällige Zahl erzeugt,
wenn mir also jemand helfen könnte wäre ich ihm zu dank
verbunden.
Unter Linux gibt es z.B. das „/dev/random“-device, das echte (!)
Zufallszahlen aus Userinputs (Tasten-/Mausbetätigungen) erzeugt.
Und wenn die bisher gespeicherten Inputs ausgehen, schickt es erst
wieder Zufallszahlen, wenn man die Maus/Tastatur betätigt.
Ein guter pseudo Generator wird bei der Programmiersprache Haskell
mitgeliefert. Hab’ ich nur nicht installiert und kann dir den
Code deshalb nicht posten. Der liegt aber als Quelltext vor, und
da kannst du dir vielleicht was abschauen.
Gruß
Thorsten
Als Informatik noob interessiert es mich schön seit längerem
wie ein Zufallsgenerator denn eine zufällige Zahl erzeugt,
wenn mir also jemand helfen könnte wäre ich ihm zu dank
verbunden.
Man kann Zufallszahlen durch geeigne Hardware erzeugen. Beim C64 war es beispielsweise üblich, einen Tongenerator des Soundchips auf Rauschen zu stellen und dann die Amplitude zu auszulesen.
Es soll sogar bald eine PCI-Steckkarte herauskommen, die Zufallszahlen mit Hilfe von Quantenmechanik erzeugt.
Thorsten
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Als Informatik noob interessiert es mich schön seit längerem
wie ein Zufallsgenerator denn eine zufällige Zahl erzeugt,
wenn mir also jemand helfen könnte wäre ich ihm zu dank
verbunden.
Eine Möglichkeit ist auch, auf die Zeit zuzugreifen. Das muss ja nicht nur die Uhrzeit sein, es gab in VisualBASIC z.B. so eine Zahl (genauer weiß ich es nicht mehr), aus der sich Sekunde, Minute, Stunde, Tag, Monat und Jahr ablesen lies… diese Zahl ändert sich also ständig, und wenn man sie in 'ne vernünftige Formel packte…
zufallszahl = int(rnd(1)*maximal)-minimal
oder so ähnlich
Sorry, is’ bei mir Jaaahre her.
Levay