Wie funktioniert ein zufallszahlen algorithmus?

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
964
Hallo, eine Frage: In so fast jeder Programmiersprache gibt es Funktionen für Zufallszahlen. Aber wie genau funktioniert so ein Generator technisch? Denn ich denke, reine die logik eines Prozessors und eine Zufallszahl passen nicht zusammen?
 
Sind auch nicht wirklich Zufall, da hast du recht.

Ein Recht simpler ,,Zufallsgenerator'' ist einfach die letzte Zahl von der Uhrzeit zunehmen. :lol:


Anders tun die ,,Generatoren'' das auch nicht, wie nehmen sich irgendwo her Werte hier( wie die Uhrzeit) verrechnen die nach einen bestimmen Algo.(aller erste + letzte zahl z.b.) und dann kommt eine Zahl raus.
 
Ich habe mal irgendwo was von gelesen, dass da auch irgendwie mit einer Speicherstelle im RAM passieren soll, da ja jeder Kondensator was einzigartiges haben soll.
 
Ein anderer Wert kann natürlich auch eine Speicheradresse sein,...welche du vermutlich meinst.

Die Uhrzeit war ja nur eins von vielen möglichen Beispielen.
 
Eine weitere Möglichkeit ist das verwenden von Nachkommastellen von Pi. Um Auszuwählen welche, muss der Generator für gewöhnlich initialisiert werden. Das geschieht z. B., wie schon erwähnt, durch die aktuelle Zeit.
 
Die letzte Ziffer der Uhrzeit ist überhaupt kein Zufallsgenerator!

Solche Funktionen wie rand() bei C heißen Pseudozufallsgeneratoren. Die sind eigentlich keine richtigen Zufallsgeneratoren, weil sie deterministisch sind. Man initialisiert sie mit irgendeinem Wert (der möglichst unvorhersehbar ist.. Uhrzeit z.B. - wobei die nicht wirklich große Entropie hat) und dann wird ausgehend davon eine Reihe Zahlen generiert. Bei kryptographischen Anwendungen reicht so ein Generator nicht aus.

Wenn es wirklich um gute Zufallszahlen geht dann werden externe Quellen für Entropie verwendet, z.B. welche die das "Rauschen" auf Bussystemen als Datenquelle verwenden oder ähnliches. Je unvorhersagbarer eine Folge von Ereignissen ist, desto besser eignet sich das für Zufallszahlen.
 
Wir hatten in ner Übungsaufgabe mal einen Zufallsgenerator geschrieben (Programm hab ich glaub nicht mehr), der das über die Uhrzeit gemacht hat. Wenn man allerdings extrem schnell hintereinander sich Zufallszahlen ausgegeben lassen hat, waren es die Gleichen - bis sich die Uhrzeit halt geändert hatte.. also nachdem eine Sekunde vergangen war
 
Die letzte Ziffer der Uhrzeit ist überhaupt kein Zufallsgenerator!
Ansichtssache, z.b. ...da der Benutzer nie gezielt drücken kann, wenn man Nano(oder Milli) genau die Uhrzeit abnimmt.

Die Methode reicht zwar für vieles nicht aus, .. aber ob der Benutzer nun Pommes oder Döner essen soll, lässt sich damit einfach lösen.

Ansonsten hast du natürlich recht, dass umso mehr Werte mit einspielen, desto besser, jedoch wollte ich nicht ins Detail gehen ; ).

waren es die Gleichen - bis sich die Uhrzeit halt geändert hatte.. also nachdem eine Sekunde vergangen war
Nano(oder Milli) genau abgreifen.
 
Zuletzt bearbeitet:
wir hatten es halt nur mit der <ctime> bib gemacht und halt nur die Uhrzeit in Sekunden abgegriffen..
hab ja auch nur gesagt, wie wir es gemacht hatten (und so stands in der Aufgabe)

Klar dass es besser geht ;) Besser gehts immer
 
Die Uhrzeit lässt unter Kenntnis des Algorithmus allerdings erahnen, wo man zu suchen hat. Für sicherheitsrelevante Zufallszahlen ist das nur bedingt geeignet.
Außerdem muss man da höllisch aufpassen, dass man da kein Schema in seine Zahlen bekommt.
 
Satellitenschüssel nehmen und aus dem Weltall die Zufallszahl generieren ist die coolste Art wie ich finde...
 
Seti@Home als Zufallsgenerator - stimmt :)

Aber ob das nun auch Zufall ist? Hat ja auch alles Rahmenbedingungen etc. ;)
 
Es muss ja nichtmal Zufall sein, von dem man vor einigen Jahrzehnten ja sogar noch ausging, dass er garnicht existiere.
Es reicht ja, wenn das System ausreichend kompliziert ist, sodass eine Vorhersage oder ein Schema nicht erstellbar oder erkennbar ist.
 
Wie wärs mit dem einfangen des Universalen Rauschens und dem Nummern zuweißen?? Absolut gute Methode.

Und ums sicher zu machen... Einfach die Mausbewegungen der User in Zahlen umwandeln, das gibt ein zufälliges Schema, wird z.B von Pokerstars zum Shuffeln verwendet.
 
Es gibt übrigends auch PCI Erweiterungskarten für den PC die auf der Zerfallszeit beruhen und einen "echten" physikalischen Zufall abbilden.
 
genau, das wird so auch im server-bereich gemacht. wo man "zuverlässigen zufall" braucht setzt man auf kleine module, die irgendwelche physikalische effekte auslesen.

einfache programme für den heimgebrauch setzen manchmal auch einfach nur auf einen pool von zahlen, also eine feste "zufällige" folge. deswegen gibts bei delphi zum beispiel den ausdruck "randomize" um nicht immer von der gleichen stelle ne folge aus dem pool abzugreifen...
 
Zurück
Oben