Frage von EGitarre, 75

Wie funktiniert Zufall (IT)?

Hallo! Ich mache derzeit eine Ausbildung zum IT-Kaufmann und seitdem wir ein bisschen programmiert haben überlege ich of´t, wie wohl der Quellcode hinter den Programmen/Spielen die ich nutze, aussehen. Dabei ist mir die Frage aufgekommen, wie das Zufallsprinzip programmiert wird. Ich meine, in der Theorie muss man dem PC ja erstmal sagen, was Zufall ist. Ich habe mir schonmal gedacht, dass z.B. in einem PC Spiel der Zufall dadurch entstehen könnte, dass quasi bei einem 5gg5 Spiel der Zufall durch Beispielsweise Namen entsteht.

Als Beispiel: Die Namen bestehen ja aus Asciizeichen, diese haben eine Zahl. Die Quersumme aller Namen wird genommen, mit einer Zahl multipliziert, welche sich in jeder Runde um X erhöht und davon wird so lange immer wieder die Quersumme gebildet, bis eine Zahl zwischen 1-10 herauskommt. Diese bestimmt dann einen der 10 Spieler "zufällig". Allerdings wäre das ja auch wieder eine berechenbare Sache, zwar kompliziert, aber machbar.

Gibt es in der IT einen wirklichen "Zufall" oder ist alles irgendwie auf eine Rechnung zurückführbar

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von MagicalMonday, 30

In der Softwareentwicklung werden meist rekursive arithmetische Verfahren verwendet. Das kannst du dir so vorstellen:

Zunächst wird eine möglichst zufällige Zahl genommen (z.B. die Unixzeit auf die Millisekunde genau) die in eine Rechnung einfließt, bei der sie mit einer irrationalen Zahl wie Pi, der Eulerschen Zahl e, der Wurzel aus 2, oder ähnlichen multipliziert wird. Aus dem Ergebnis nimmt man nun eine beliebige Nachkommastelle und gibt diese als die erzeugte Zufallszahl zurück.

Beim rekursiven Verfahren nimmt man dann für den nächsten Durchlauf aber nicht wieder die Zeit als Startwert (oder zumindest nicht nur allein) sondern einen Teil der zuletzt erzeugten Irrationalen Zahl.

Möchte man aber nicht-deterministische ("echte") Zufallszahlen erzeugen, wird dazu meistens der Zerfall eines radioaktiven Elements, oder noch einfacher, ein Rauschgenerator oder das natürliche Atmosphärenrauschen verwendet.

Wer mit echten Zufallszahlen arbeiten möchte aber keinen Generator hat, kann Zahlenlisten kaufen, die mit einem nicht-deterministisches Verfahren generiert wurden.

Übrigens: Dein Beispiel hätte den Nachteil, dass bei den gleichen Namen immer wieder die gleiche Zahlenreihe heraus käme. Da ist es schon besser, zumindest die Zeit einzurechnen.


Antwort
von DerDragonhunter, 29

Es sind ganz spezielle Formeln, zb: 1234 * pi / 987 = 3.927786560

Dann werden die letzten 4 Ziffern verwendet (6560) und dass ganze geht von vorne lost

6560 * pi / 987 = 20.88029160

Forscher / Mathematiker haben da richtige Formeln entwickelt dass das Ergebnis wirklich fast immer wie Zufall aussieht (Algorithmus für Zufallszahlen)

Wenn du zb eine Musikplaylist hast, wird das System zb nur dreistellig verwendet und diese Zahl ist die Nummer, welche dann drankommt. (also Lied 6560 oder 9160 oder 0058 oder oder....) Dass wirkt dann wie Zufällig.

Aber um zu vermeiden dass, wenn das Programm auf zwei Geräten zum ersten mal gestartet wird, dass dann beide immer denselben Zufall bringen, werden gerne VIEL mehr Faktoren verwendet (andere Startzahl, Datum, Zeit, sogar Ortskoordinaten zb für Verschlüsselungen und so).

Also Eine Wissenschaft für sich ;)

Kommentar von Mojoi ,

"wie Zufall aussieht"

Ganz genau. Dieses Verfahren wendet man an, wenn man keine "echten" Zufallszahlen benötigt, sondern es nur für den Benutzer nach Zufall aussehen soll oder einfach nur eine große Menge unterschiedlicher Zahlen schnell generieren will.

Antwort
von petschkoo, 4

Wirklichen Zufall gibt es nicht, sehr schön kann man das an einem mit Zufalls-Funktionen generierten Bild sehen:

http://2.bp.blogspot.com/_Snv9z7dvT9E/SDyXBQ4KwxI/AAAAAAAAAD0/w7aWSQe-NK4/s400/r...

Man kann ein sich wiederholendes Muster sehen.

Mir ist es sogar einmal passiert, dass mir die "einzigartigen" Zufallszahlen ausgingen... Obwohl in der Range genug Platz war, lag zwar mehr an der Random funktion, die extrem schlecht funktionierte aber da hab ich das erste mal gemerkt, dass es nur Pseudo-Zufall ist.

Antwort
von Mojoi, 21

In der IT greift man auf - verfügbare - Signalquellen zurück, deren Ausgabewerte schwer vorherzusagen oder zurückzurechnen sind (schwer heißt hier NICHT unmöglich).

Klassischerweise werden da ausgelesen:

Momentane Zeit (wenn z.B. die Tausendstelsekunden ausgelesen werden, ist das von außen ohne weiteres nicht leicht nachzuvollziehen).

Temperatursensoren

Typischerweise schwankende Spannungen

Man greift auch gerne auf externe pseudozufällige Eingaben zurück. Z.B. soll der Nutzer mit dem Mauszeiger wild auf dem Bildschirm herumwischen. Die daraus eingehenden Daten sind praktisch zufällig, da quasi nicht reproduzierbar.

Die neueste Generation der Computer haben ein SK-Modul. Dabei handelt es sich um eine in sich geschlossene Kiste, in der eine Katze steckt. Diese Katze ist entweder tot oder lebendig. Der Zustand, ob tot oder lebendig lässt sich von außen nicht auslesen.

Kommentar von triopasi ,

Ich glaub du hast Schrödiger falsch verstanden, so hat das glaub noch keiner benutzt das Gedankenexperiment :D

Kommentar von Mojoi ,

Wenn du vierhundert Kisten hintereinander aufstellst und alle gleichzeitig öffnest, hast du einen 400Bit starken Code.

Leider kannst du beim nächsten Mal nur 200 der Kisten weiterverwenden.

Kommentar von PWolff ,

Quantenmechanische Vorgänge sind reversibel. Also kann man die Katzen auch wiederbeleben.

(Problem ist - ähnlich wie beim Beta-Zerfall mit dem abhauenden Neutrino - wieder an eine Seele zu kommen. Und auch der Einfangsquerschnitt für Seelen ist erfahrungsgemäß ziemlich gering - jedenfalls makroskopisch praktisch Null.)

Kommentar von PWolff ,

Aber wie kürzlich im Radio gesagt wurde, leiden die meisten europäischen Großstädte sowieso unter einer Katzenplage ...

Kommentar von Mojoi ,

Katzen haben doch keine Seele.

Der Beweis: Stell mal etwas kostbares, zerbrechliches auf die Tischkante.

Kommentar von EGitarre ,

Ich les nur Katze xD

Kommentar von SirNik ,

wtf

Antwort
von taunide, 49

So weit ich weiß, wird die RND() Funktion (Zufallszahl) über die Uhrzeit gebildet.

D.H. eine Formel, die die Zeit beinhaltet und dadurch immer andere Werte ausgibt. - Die genaue Formel kenne ich aber nicht.

Antwort
von coding24, 30

In der IT gibt es keinen Zufall - man kann nur versuchen, möglichst nahe an einen "Zufall" zu kommen, indem man viele "zufällige" Parameter nutzt.

Grundsätzlich steht hinter allem aber ein Algorithmus, der bei gleichen Parametern auch immer wieder dasselbe Ergebnis liefert.

Vor wenigen Monaten haben es aber angeblich ein paar Informatiker nach 20 Jahren Forschung geschafft, echte Zufallszahlen zu generieren:
http://winfuture.de/news,93326.html

Antwort
von Hugoz2, 25

In der IT gibt es keinen Zufall. Die maschinell generierten Zufallszahlen nennt man auch Pseudozufallszahlen.

Antwort
von exxonvaldez, 19

Man unterscheidet zwischen echtem Zufall und Pseudozufall.

Ein Computer kann niemals echten Zufall erzeugen, sondern immer nur Pseudozufall aus irgendwelchen Ausgangsdaten (z. B. Uhrzeit) errechnen.

Echten Zufall gibt es in der Natur z. B. bei radioaktivem Zerfall oder dem kosmischen Hintergrundrauschen.

Kommentar von PWolff ,

Soweit ich weiß, gibt es Zufallsgeneratoren, die auf quantenmechanischem Rauschen von Transistoren beruhen.

Kommentar von exxonvaldez ,

Jupp. Echten Zufall braucht man für Kryptoverfahren.

Da wäre es zu unsicher sich auf den (berechenbaren) Pseudozufall zu verlassen.

Antwort
von xCrizCroz, 24

Ist immer zurückführbar, meistens an die Zeit(Uhrzeit) gebunden.

Antwort
von kordely, 2

Zufallszahlen sind deterministisch ausgerechnet von einem Seed. Dafür muss man den Generator korrekt einstellen.

Antwort
von Invert801, 7

Also im SQF habe ich ein zufalls script

randnum=3

group1 = (this select 0)
group2 = (this select 1)
usw

if (randnum = 1) then

if (randnum = 2) then

es wird praktisch ein zufall ausgewürfelt.

Keine passende Antwort gefunden?

Fragen Sie die Community