Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Random auf Win64 (https://www.delphipraxis.net/161344-random-auf-win64.html)

Progman 29. Jun 2011 15:58

Random auf Win64
 
Vorgeschichte: Ein in Delphi 2007 geschriebenes Programm beinhaltet Funktionen, die aus einer Liste einen zufälligen Eintrag auswählen
Delphi-Quellcode:
Random(Liste.Count)
. Dies geschieht mehrmals, so dass eine neue Liste entsteht mit diesen zufälligen Einträgen.
Nach mehrmaligem Aufrufen kommt es vor, dass sehr oft die gleichen Einträge wie vorher erscheinen, obwohl ich beim Programmstart einmalig Randomize aufrufe. Auf 32-Bit-Systemen passiert das nicht.
Nur auf vereinzelten 64-Bit-Systemen. Kann es daran liegen? Sollte ich mir lieber eine eigene Random-Function bauen? :)

himitsu 29. Jun 2011 16:23

AW: Random auf Win64
 
Am Random sollte sich rein garnichts verändern.

Dei Delphi-Programm ist und bleibt 32-bitig, auch auf einem 64 Bit-System.
In Delphi wird ein Pseudozufallsgernerator verwendet, welcher sich nicht verändert, da er direkt in dein Programm eingebunden ist und somit immer mit 32 Bit läuft.

Wenn sich also etwas bei der Berechnug ändert, je nach Betriebssystem, dann würde ich mir hier sehr große Sorgen machen.
Der Pseudozufallsgernerator ist einfach nur eine mathematische Formel und diese sollte immer das selbe Ergebnis liefern.

Progman 29. Jun 2011 16:29

AW: Random auf Win64
 
Ja, das dachte ich mir ja auch.
Jetzt hat sich aber herausgestellt, dass es bei dem Tester mit seinem 64-Bit-Rechner ein Zufall war, dass (es geht um Simulation von Führerscheinprüfungen) bei ihm bei neu generierten Prüfungen sich mehrmals einige Fragen wiederholt haben.

Uwe Raabe 29. Jun 2011 16:33

AW: Random auf Win64
 
Zitat:

Zitat von Progman (Beitrag 1108969)
dass es bei dem Tester mit seinem 64-Bit-Rechner ein Zufall war


random

Stevie 29. Jun 2011 16:53

AW: Random auf Win64
 
Dann war es wohl Zufall, dass die Zufälle zufällig dieselben waren? :lol:

Progman 29. Jun 2011 17:15

AW: Random auf Win64
 
Zitat:

Zitat von Stevie (Beitrag 1108989)
Dann war es wohl Zufall, dass die Zufälle zufällig dieselben waren? :lol:

Hehe, so kann man es beschreiben.
Zur Erläuterung:
Es geht um die Neuauflage des Programms "Europa-Führerschein 2012" und in einigen Tagen ist Termin im Presswerk, damit es rechtzeitig in den Handel kommt.
Nun sitzen bei unserem Publisher Leute daran und testen es nochmal richtig durch. Und bei einem trat dieser Effekt auf und er hat mich sofort ganz aufgeregt angerufen 8-)
Nun hat sich aber herausgestellt, dass es eben tatsächlich ein Zufall war, dass mehrmals die gleichen Fragen in aufeinander folgenden Prüfungssimulationen vorkamen. Das kann bei realen Prüfungen ja auch vorkommen. Die Anzahl der Fragen ist nun mal begrenzt :lol:

himitsu 29. Jun 2011 17:41

AW: Random auf Win64
 
Jupp, man bedenke, daß bei dir die 32 Bit Zufallswerte auf einen geringeren Bereich runtergerechnet werden, oder hast du zufällig 4 Milliarden Fragen zur Verfügung?

Und bei einem so kleinem Wertebereich kann sich schnell mal etwas wiederholen, wenn man nur wenige aufeinanderfolgende Werte betrachtet, welches insgesamt und über größere Strecken aber dann doch nicht mehr so gleich ist.

shmia 29. Jun 2011 18:01

AW: Random auf Win64
 
Mir scheint, dass hier das Prinzip "Ziehung ohne zurücklegen" nicht angewandt wurde.
Sagen wir mal, es gibt einen Fragenkatalog mit 30 Fragen.
Jetzt wird zufällig eine Frage zwischen 1 und 30 ausgewählt.
Diese Frage muss natürlich aus dem Fragenkatalog entfernt werden, damit es völlig unmöglich wird, dass die gleiche Frage nochmals drankommt.
Nach der 1. Frage sind also nur noch 29 Fragen im Fragenkatalog. usw.

Progman 29. Jun 2011 18:30

AW: Random auf Win64
 
Zitat:

Zitat von shmia (Beitrag 1109013)
Mir scheint, dass hier das Prinzip "Ziehung ohne zurücklegen" nicht angewandt wurde.
Sagen wir mal, es gibt einen Fragenkatalog mit 30 Fragen.
Jetzt wird zufällig eine Frage zwischen 1 und 30 ausgewählt.
Diese Frage muss natürlich aus dem Fragenkatalog entfernt werden, damit es völlig unmöglich wird, dass die gleiche Frage nochmals drankommt.
Nach der 1. Frage sind also nur noch 29 Fragen im Fragenkatalog. usw.

Nein, das ist nicht das Problem. Die Fragen werden in eine Liste kopiert, dort die zufälligen gezogen und gelöscht. Innerhalb einer Prüfung kann nicht die gleiche Frage nochmal vorkommen.
ABER bei der nächsten Generierung einer Prüfung muss ich die Fragen wieder aus der Original-Liste kopieren, sonsr wäre ja nach der fünften oder sechsten Prüfung keine Frage mehr da :P
Und der Fragenpool ist begrenzt, zumal die einzelnen Fragen bestimmten Bedingungen genügen müssen.

Ein Beispiel:
Zu einem bestimmten Themengebiet gibt es 8 Fragen, davon müssen 4 ein Bild enthalten und die Gesamtfehlerpunktzahl dieser 8 Fragen muss 32 sein. Da diese Prüfung als nicht bestanden gilt, wenn mehr als 10 Fehlerpunkte erreicht sind oder zwei Fragen mit 5 Fehlerpunkten falsch waren, muss ich in diese 8 Fragen (insgesamt sinds ja zw. 20 und 40, je nach Klasse) mindestens eine Frage mit 5 Punkten unterbringen. Das heißt, 32 durch 8 ergibt 4, also um eine Frage mit 5 Punkten drin zu haben, muss eine andere mit 3 Punkten sein. Der Rest kann 4 Punkte haben. Dieses Themengebiet enthält ca. 60 Fragen. Nun sind Fragen mit 5 Punkten nicht sehr häufig im Fragenkatalog, also muss man damit rechnen, dass sie sich in aufeinanderfolgenden Prüfungssimulationen durchaus mal wiederholen können. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.

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