wirklich random?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo zusammen

Code: Alles auswählen

randList = []
    for i in range(10):
        randList.append(random.randint(0, 10))
    print(randList)
ergibt:

Code: Alles auswählen

[0, 2, 9, 9, 2, 9, 9, 8, 2, 6]
.
Ich mein, könnte schon ein bisschen mehr verschiedene Zahlen geben nicht? Z.B. mag ich auch 5 oder 4. Kommt mir das nur so vor, oder sind die Zahlen, die so erzeugt werden nicht wirklich gleichverteilt?
[url=http://www.proandkon.com]proandkon.com[/url]
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Doch, die Zahlen sind in etwa gleichverteilt, Menschen haben nur typischerweise Probleme sich diese vorzustellen. Wenn Zahlen gehäuft vorkommen, werden diese als Muster erkannt, obwohl dies nicht der Fall ist. Mehrfach vorkommende Zahlen sind allerdings nichts außergewöhnliches. Machst du eine größere Stichprobe, oder viele kleine, dann gleicht sich diese gefühlte Unregelmäßigkeit aus.
Das Leben ist wie ein Tennisball.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Mach mal eine größere Stichprobe. Zufällig heißt eben gerade auch, dass du bei einer kleineren Stichproben Ergebnisse bekommst die stark von einer Gleichverteilung abweichen.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Code: Alles auswählen

In [1]: import random

In [2]: from collections import defaultdict

In [3]: data = defaultdict(int)

In [4]: for x in xrange(100000):
   ...:     data[random.randint(0,10)] += 1

In [5]: data
Out[5]: defaultdict(<type 'int'>, {0: 9042, 1: 9121, 2: 9118, 3: 9209, 4: 9152,
5: 9080, 6: 8998, 7: 9139, 8: 9005, 9: 9091, 10: 9045})
Also ich finde es sehr gut Verteilt :)

Gruss
Nocta
User
Beiträge: 290
Registriert: Freitag 22. Juni 2007, 14:13

Joa, da gilt das http://de.wikipedia.org/wiki/Gesetz_der ... Fen_Zahlen ;)
Bei rayo sind es eben sehr viele Zahlen.

Wenn man das ganze nur mit 10 Zahlen machen würde, könnte das Ergebnis theoretisch auch

Code: Alles auswählen

In [5]: data
Out[5]: defaultdict(<type 'int'>, {3: 9, 4: 1})
lauten.
Natürlich könnte man auch bei einer Millionen Zahlen eine starke Gewichtung zu einer einzelnen Zahl hin haben, aber das ist sehr unwahrscheinlich.

Bei Zufallsalgorithmen habe ich bisher eh immer ziemlich gleichmäßige Ergebnisse gesehn, vielleicht lassen die gar keine allzu große Abweichungen zu :p
Benutzeravatar
pyFan
User
Beiträge: 22
Registriert: Sonntag 4. Januar 2009, 15:44

Hallo!

Man kann sich natürlich auch bei

www.random.org "echten" Zufall besorgen.
Dieser wird aus athmosphärischen Rauschen extrahiert.
Nicht diese häßlichen Pseudozufallszahlengeneratoren...

ungetestet:
http://www.derkeiler.com/Newsgroups/sci ... 15862.html


Gruss

pyFan
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

und der Typ, der das verzapft hat, nennt sich auch noch "rossum" ... :lol:
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Irgendwann ... Irgendwann werden die Menschen in der Lage sein, auch atmosphärisches Rauschen zu "berechnen"/vorherzusagen. Und dann ists mit "True Randomness" auch nicht mehr weit her :wink:
lunar

pyFan hat geschrieben:Man kann sich natürlich auch bei www.random.org "echten" Zufall besorgen.
os.urandom und random.SystemRandom liegen näher, erfordern keine Netzwerkverbindung und erzeugen zumindest bei jedem modernen Linux- und Windowssystem Zufallszahlen, die jedem Anspruch genügen. Unter Linux lässt sich zudem immer noch "/dev/random" direkt öffnen, falls echte Zufallszahlen benötigt werden (was aber eigentlich nie der Fall ist).

Für kryptographische Zwecke lassen sich Zahlen, die über ein ungesichertes Netz laufen, eh nicht verwenden.
Nicht diese häßlichen Pseudozufallszahlengeneratoren...
Was ist denn an Pseudozufallsgeneratoren hässlich?
Benutzeravatar
pyFan
User
Beiträge: 22
Registriert: Sonntag 4. Januar 2009, 15:44

Hallo!

@Lunar:
Bitte nicht so ernst nehmen.
Klar haben die systemeigenen Generatoren riesige Perioden und sind
viel schneller. Nicht umsonst habe ich "echten" in Anführungszeichen
gesetzt. Es gibt kaum einen Unterschied zwischen "Pseudo"
und "echt".

Interessant fand ich diesen Artikel, der zeigt, wie man schlechte
Pseudozufallszahlengeneratoren entlarven kann:
http://www.heise.de/security/Verschusse ... kel/103093

Gruss

pyFan
problembär

Subjektiv finde ich's immer noch etwas zufälliger, wenn ich vorher nochmal

Code: Alles auswählen

random.seed()
mache ...

Gruß
lunar

pyFan, entschuldige, da hab ich wohl ein bisschen was falsch verstanden ;)
pyFan hat geschrieben:Klar haben die systemeigenen Generatoren riesige Perioden und sind viel schneller.
Echte Zufallszahlen haben keine Periode. :)

@problembär
Subjektiv mag ja sein, objektiv gesehen ist das völlig überflüssig, da random.seed() beim Import des Moduls bereits aufgerufen wird. ".seed()" ist nur dann sinnvoll, wenn man eigene Exemplare der Zufallsklassen erzeugt.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

lunar hat geschrieben:Subjektiv mag ja sein, objektiv gesehen ist das völlig überflüssig, da random.seed() beim Import des Moduls bereits aufgerufen wird. ".seed()" ist nur dann sinnvoll, wenn man eigene Exemplare der Zufallsklassen erzeugt.
Und gefährlich ist es auch noch, wenn man zu oft seeded. Dann sind die Zahlen im schlimmsten Fall korreliert.
Antworten