Wieso können sich Computer eine zufällige Zahl ausdenken?

... komplette Frage anzeigen

3 Antworten

Wie zufällig darf's denn sein?

Für die meisten Zwecke (Computerspiel, Monte-Carlo-Simulation) reichen sogenannte Pseudo-Zufallszahlen aus. Man nimmt als Startwert beispielsweise die Milli- und Mikrosekunden der von Dir genannten Quarzuhr.

Oder einfacher einen der vielen Zähler, die ein Mikroprozessor mitführt und beispielsweise sagt, wieviele Sprünge er richtig vorhergesagt hat.

Diese Zahl nimmt man dann als Startwert einer Berechnung, z.B. eine wie von Schachpapa genannte, und das Ergebnis der Berechnung wird aufgeteilt: Ein Teil liefert die gewünschte Zufallszahl, der andere Teil den Startwert für die nächste Berechnung.

Für kryptographische Zwecke ist das ungeeignet, jedenfalls dann, wenn es sehr sicher sein soll. Denn wer - notfalls durch Ausprobieren aller Möglichkeiten - den Startwert kennt, kann alle folgenden Zahlen berechnen.

Für kryptographische Zwecke nimmt man echte Hardware. Einfaches Beispiel: An den Mikrofoneingang der Soundkarte wird kein Mikrofon, sondern ein 10-kOhm-Widerstand angeschlossen. Damit hängt die Eingangsspannung vorwiegend vom Rauschen ab.

Wird eine Zufallszahl benötigt, misst man die Spannung, die in diesem Moment von der Soundkarte gemessen wird.

Nachteil: Man kann nur langsam weitere Zahlen gewinnen. Würde man nach 1 Mikrosekunde erneut ablesen wollen, bekäme man den gleichen oder fast gleichen Wert geliefert. Nach einer Milli-Sekunde ist der Wert anders, aber noch nicht unabhängig vom verhergehenden. Nach einer Sekunde ist er unabhängig und echt zufällig.

Die Soundkarte ist aber nur als Beispiel gedacht, sie wird zu sehr von außen (z.B. die 50-Hz-Störungen aus dem Netz) beeinflusst. Für ernsthafte Anwendungen nimmt man abgeschirmte Bauteile, deren Rauschen dann wirklich nur noch vom Zufall abhängt.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Eisenkoenig
12.06.2016, 16:53

Vielen dank für deine Mühe,
Persönlich kann ich mir schwer vorstellen wieso mann eine Zufallszahl mit einer Soundkarte generieren sollte.
Die andere Variante ist doch auch ausreichend für Kryptographische Sachen.

0

In der Programmiersprache Java wird ein sog. linearer Kongruenzgenerator benutzt. Mn beginnt mit einem Startwert s und berechnet den nächsten Wert nach der Formel:

s * 25214903917 + 11

Von dieser Zahl nimmt man nur die letzten 48 Binärstellen.

Das sieht dann wie zufällig aus und ist für die meisten Anwendungen ausreichend.

Mit kleineren Zahlen  geht das auch:  s = (s * 11 +4 ) % 31

Nach 30 Schritten geht's in der gleichen Reihenfolge wieder von vorne los. Beim Java-Random geht es nach ca. 2^48 = 281 Billionen Schritten wieder von vorne los.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Eisenkoenig
12.06.2016, 15:34

Sagen wir mal ich möchte das eine zufällige Zahl zwischen 1 und 2 raus kommt, dann würde mit der Rechnung trotzdem immer die selbe Zahl rauskommen so wie ich das verstanden habe.

0

Zunächst einmal können Computer keine Zufallszahlen generieren, da sie zuhöchst logisch denken. Alles was sie machen können ist Zahlen auf Arten zu generieren, die wir Menschen nicht nachvollziehen können, sodass sie uns zufällig erscheinen.


Ein Beispiel wäre die Zeit seit dem Start des Computers in Millisekunden. Diese wird dann als Eingabe genutzt, es werden einige komplizierte Algorithmen durchgeführt und wir kriegen eine scheinbar zufällige Zahl, die du als Mensch nicht erraten könntest.


Wenn du mehr zum Thema wissen willst, lies dir mal diesen Link durch: https://de.wikipedia.org/wiki/Zufallszahlengenerator


Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?