Autor Beitrag
Chris Maslowski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Mo 20.02.06 17:27 
Hallo,
oft kommt es ja vor das man eine zufällige Zahl braucht. Aber wie sicher ist diese Randomize Funktion bei Delphi? Also ist sie wirklich zufällig und weiß vielleicht jemand wie der Algorithmus dafür funktioniert?
Weiß jemand auch vielleicht wie man einen Algorithmus kontrolliert, also testen kann wie gut er funktioniert?
Kennt ihr andere Algorithmen zur Zufallszahl?`
Schon mal Danke Gruß
Chris
WASEO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win98, Win2000, WinXP
D6 Prof, D7 Prof
BeitragVerfasst: Mo 20.02.06 18:03 
Hallo!

Bei Delphi kann man mit Randomize die Zufallszahlen initialisieren. Soweit ich weiss, wird einfach die Uhrzeit als Zahl genommen und auf dieser Basis nach einem bestimmten Algorithmus Zufallszahlen generiert. Wenn man testen will, wie gut der ist, läßt man einfach sein Programm so lange Zufallszahlen generieren, bis dieses eine Wiederholung feststellt (z. B. könnte man ein Memo mit Zufallszahlen füllen und dann in bestimmten Zeitabständen testen, ob sich die ersten 3 Zahlen nacheinander irgendwo in Memo.Lines.Text wiederholen).

Ansonsten schaumalguckeda:
Zufallszahlen ohne Wiederholung generieren

_________________
Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
Chris Maslowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Mo 20.02.06 18:26 
Also hat der Algoritmus eine Ungenauigkeit. Denn wenn man eine Zufallszahl beispielsweise für Lottorie braucht zieht man die Zahlen immer zur selben Zeit und somit sind einige Zahlen wahrscheinlicher als andere.
Ich probier das Mal aus wie genau der Algoryhtmus nun ist.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 20.02.06 20:16 
Nein! Random ist hinreichend gleichverteilt. Randomize sollte nur beim Programmstart einmalig aufgerufen werden. Random selbst generiert über eine realtiv einfache Funktion Pseudozufallszahlen. 'Pseudo' deshalb, weil sie eben keine echten Zufallszahlen (wie ein Würfel) erzeugt.

Keine Bange, die Zahlen sind gleichmäßig verteilt und wiederholen sich erst nach (weiss nicht genau) 65000 Zahlen.

Und bei einem 'Random (100)' bestimmte Zahlen doppelt vorkommen, dann ist das Zufall. So, wie es sein soll. Du kannst ja auch 10x hinereinander eine 6 würfeln, oder?

Nochmal: Randomize verwendet die Systemzeit, soll aber nur 1x beim Programmstart aufgerufen werden. Und auch nur dann, wenn man wirklich jedesmal andere Zufallszahlen will. Random ist eine einfache Funktion, ich meine sie ist linear, aber ich hab den Code nicht gefunden.

_________________
Na denn, dann. Bis dann, denn.