Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie zufällig ist Random(x)? (https://www.delphipraxis.net/24127-wie-zufaellig-ist-random-x.html)

negaH 16. Jun 2004 07:29

Re: Wie zufällig ist Random(x)?
 
Zufallszahlen die mit random() erzeugt wurden sind nicht zufällig. D.h. jede einzelne und sequentiell erzeugte Zahl ist überhaupt nicht zufällig, sondern musste exakt beim aktuellen Aufruf von Random() berechnet werden.
ABER, um diese "Zufälligkeit" geht es im Grunde garnicht, es ist sogar gut so. Das was Random() mathematisch machen soll ist das es nichtzufällige Zahlen produziert deren statistische Verteilung/Wahrscheinlichkeit, ihre Häufigkeit und ihr Auftauchen, eben einer Zufallsverteilung entspricht. Die erzeugten Zahlen sind also keinesweigs zufällig, aber eine beliebige Menge von Zahlen die mit Random() erzeugt wurden, sollte immer nach Zufall aussehen. Die statistischen Eigenschaften der Menge sollte dem Zufall entsprechen.

Es gibt aber auch Hardware Generatoren, sei es als extra Hardware oder über das Internet. Im WEB gibt es einfachste API's per HTTP um eine Anzahl von Zufallsbits bei bestimmten Servern abzufragen. Meistens wurden diese per radioaktivem Zerfall erzeugt.
Wir kommen damit auch zum Problem der Hardware-Generatoren. Ja, sie basieren auf angeblich zufälligen Ereignissen, wie dem Rauschen einer Diode oder dem Zerfall radioaktiver Elemente. Das Problem dabei ist aber das das nur per Axiom, also physikalischen Beobachtungen, ABER NICHT durch mathematische Beweise exakt als Zufällig bewiesen wurde.

Deshalb gilt in den meisten Anwendung das ein guter Pseudo-Zufallsgenerator, mit exakt nachvollziehbaren mathematischen Eigenschaften, JEDEM Hardware-Zufalls-Generator vorzuziehen ist. D.h. obwohl Random() eben NICHT zufällig Zahlen produziert, ist das besser als echt zufällige Zahlen zu benutzen. Der Algorithmus von Random() kann ganz exakt mathematisch bewiesen werden, und mit den entsprechenden Parametern kannst du dir 100%tig sicher sein das die durch Random() erzeugten Zahlen als Menge den Eigenschaften von Zufall entsprechen. Bei einem Hardwaregenerator stützt man sich auf angeblich = beobachtete zufällige Ereignisse. KEIN Mensch kann heutzutage den Zerfall radioaktiver Elemente oder das Rauschen einer Diode vorhersagen, aber das heist nicht das es nicht möglich wäre. Wir stützen uns also bei HW-RNG's auf physikalische Ereignisse die sich der Mensch NICHT vollständig erklären kann. Nun, für viele Anwendungen ist eine solche Basis von Zufall unerwünscht.

Die Random() Funktion benutzt einen LCG = Linear Congruential Generator.

Man kann Pseudo-RNG's bauen die mathematisch so beweisbar sicher sind das man als Aussenstehnder die Folge der produzierten Zahlen nur dann bestimmen kann wenn man den Startwert=Seed des RNG's kennt. Wird dieser Seed geheim gehalten, dann sind die produzierten Zahlen immer noch pseudo-zufällig, aber denoch ist die Komplexität des benutzten Algorithmus dann so hoch das kein Mensch oder Maschine in der Lage wäre eine Vorhersage der nächsten Zahlen zu machen. Der Vorteil von solchen math. Verfahren gegenüber Hardware-Generatoren, ist eben der Punkt das ALLE Eigenschaften EXAKT mathematisch beweisbar und somit die notwendigen Parameter und Schranken kalkulierbar sind. Dies ist bei HW-RNGs nicht der Fall.

Philosophisch gesehen gibt es keine Zufälle, egal welche Ideologie man vertitt. In diesem Punkt sind sich Christen, Buddhisten, Marxisten usw. alle einig.

Der einzigste Unterschied zwichen Pseudo-Zufall und echtem Zufall besteht in der Komplexität und unserem Wissensstand.

Gruß Hagen

nieurig 16. Jun 2004 07:32

Re: Wie zufällig ist Random(x)?
 
Meines Wissens ist die Ermittlung von Pseudozufallszahlen eine Kombination von Stephans Darstellung (komplizierter Mathe-Algo) und der Zeitnahme aus dem System.

Die Berechnung geht immer von einer bestimmten Zahl aus, um die nächste Zufallszahl zu berechnen. Bei fortlaufender Berechnung ist dies jeweils die zuletzt ermittelte Zufallszahl.

Die Zeit spielt hierbei nur beim Start des Algorithmus eine Rolle. Sie stellt nämlich die Zahl bereit, mit der das Ganze losgeht. Deswegen kommt (kam?) ohne Randomize auch immer die gleiche Folge von Zufallszahlen bei raus.

Niels

Ultimator 16. Jun 2004 12:20

Re: Wie zufällig ist Random(x)?
 
Zitat:

Zitat von Irgendjemand
jede elektrische Leitung rauscht immer und minimal dadurch

Da muss ich dich leider korrigieren ( :mrgreen: ): Es gibt sogenannte Supraleiter, die überhaupt gar keinen Widerstand haben, z.B. Gold bei großen Minusgraden...

vlees91 16. Jun 2004 13:03

Re: Wie zufällig ist Random(x)?
 
wie schon gesagt wurde: es wird mit hilfe der Uhrzeit und Datum gemacht. Allerdings nur wenn man vorher randomize; eingegeben hat(egal wo, es muss nur audgeführt werden(am besten in Form.Create))

ich hab mal in einem php-buch gelesen, wenn man etwas mit session ids machen möchte kann man anstatt sessid() auch random benutzen, weil das sich auf die zeit und das datum des servers bezieht und somit diese zahl/code eindeutig ist(die uhrzeit steht nicht drin, aber angeblich kommt diese Zahl/string nicht noch einmal vor)

Sanchez 16. Jun 2004 14:36

Re: Wie zufällig ist Random(x)?
 
Hallo zusammen,

Ich hatte bei meiner schriftlichen Matura (Abi) unter anderem die Aufgabe auf einem C167-Controler einen Würfel zu realisieren.

Ich habs so gemacht, dass ich mit einem Taster einen digitalen Eingang angesteuert habe. Ab der steigenden Flanke hab ich begonnen die Zeit zu zählen, bis der Taster wieder losgelassen wurde. Ne Modulo-Operation drüber, um auf 1-6 zu kommen und fertig war der pseudozufällige Würfel.

Ähnlich wirds vermutlich hier auch laufen. Außer der Zeit muss sich nichts ändern.

grüße, daniel

dizzy 16. Jun 2004 17:42

Re: Wie zufällig ist Random(x)?
 
Zitat:

Zitat von Ultimator
Zitat:

Zitat von Irgendjemand
jede elektrische Leitung rauscht immer und minimal dadurch

Da muss ich dich leider korrigieren ( :mrgreen: ): Es gibt sogenannte Supraleiter, die überhaupt gar keinen Widerstand haben, z.B. Gold bei großen Minusgraden...

[OT] Ich bin mir nicht sicher, ob der el. Wiederstand da überhaupt etwas mit zu tun hat! So weit ich meine zu wissen liegt das in der (quantenmechanischen) Natur von Elektronen. Ich mag mich hier evtl. böse vertun, aber Herr Lesch hat so etwas meine ich mal gesagt ;) [/OT]

Ultimator 16. Jun 2004 17:51

Re: Wie zufällig ist Random(x)?
 
Dann hab ich nix gesagt. :oops:
Ich dacht halt, das das was damit zu tun haben könnte.

Plague 16. Jun 2004 19:17

Re: Wie zufällig ist Random(x)?
 
Meines wissens nach wird die Random(x) Funktion über eine Mathematische Formel berechnet, die aber immer bei 0 startet. Das hat zur Folge, dass man unter umständen (zB bei Timer Einsatz) immer die gleichen Zahlen erhält.
Ich nutze inzwischen immer die
Randomize(x) Funktion

Da startet es immer bei einer anderen Zahl...

Gruß
Thomas

Matze 16. Jun 2004 19:21

Re: Wie zufällig ist Random(x)?
 
Zitat:

Zitat von Plague
Ich nutze inzwischen immer die
Randomize(x) Funktion

Wie soll denn diese Funktion aussehen?

Ich verwende immer randomize und danach random(x), deine Funktion kennt Delphi su aich nicht. ;)

tn249 6. Sep 2004 17:49

Re: Wie zufällig ist Random(x)?
 
Ich habe einmal ein Lotto spiel in delphi (3 glaub ich) programmiert und je nach tag und uhrzeit kamen da manche zahlen häufiger vor als andere , manche soager nur ein bis zweimal in mehreren tausend durchgängen

MfG
tn249


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz