Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eine Frage zur Random-Funktion
Transmechanicus - Di 03.06.03 18:59
Titel: Eine Frage zur Random-Funktion
Ich habe eine Frage zur Random-Funktion. Selbige soll ja angeblich Zufallszahlen erzeugen - blöderweise bekomme ich in 90% der Fälle lauter "gleiche" Zufallszahlen.
Folgender Auszug aus meinem Programm sollte EIGENTLICH zufällig aus einer Ini-Datei bestimmte Werte auslesen um so ein zufälliges Gedicht zu erstellen.
Hier der Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| inhalt:=worte.ReadString('Einleitung',inttostr((random(i))+1), '-')+' '; randomize; inhalt:=inhalt+worte.ReadString('Verben', inttostr(random(i)+1), '-')+' '; randomize; inhalt:=inhalt+worte.ReadString('Adjektive', inttostr(random(i)+1), '-')+' '; randomize; inhalt:=inhalt+worte.ReadString('Nominative', inttostr(random(i)+1), '-')+' '; randomize; inhalt:=inhalt+worte.ReadString('Endreim', inttostr(random(i)+1), '-'); |
Bei zwei durchläufen erhalte ich folgende Zufallszahlen:
4
4
4
4
4
4
4
8
Ach ja: die Variable i hat den Wert 9
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
Terra23 - Di 03.06.03 19:08
Dann mußt du dem Programm doch lediglich sagen, daß nach jedem Durchlauf die Zufallszahlen gespeichert werden sollen, sprich wenn deine erste Zahl die 4 ist, soll er danach nur eine Zufallszahl ausgeben, die nicht die 4 ist. Wenn du sagst, das Programm darf keine Zahlen doppelt lesen, mußt du es auch dem Programm mitteilen. Es kann ja nicht ahnen, daß es dir nicht paßt. :mrgreen: Und das so oft die 4 vorkommt, nenne ich Zufall. :-)
Phantom1 - Di 03.06.03 19:13
du darfst den zufallsgenerator (Randomize) nur ein mal initialisieren zb. in der FormCreate !!!!
Transmechanicus - Di 03.06.03 19:51
Wow viele Dank - letzteres war das Problem!
Delete - Mi 04.06.03 01:30
Titel: Re: Eine Frage zur Random-Funktion
| Transmechanicus hat folgendes geschrieben: |
| Ich habe eine Frage zur Random-Funktion. Selbige soll ja angeblich Zufallszahlen erzeugen - blöderweise bekomme ich in 90% der Fälle lauter "gleiche" Zufallszahlen. |
Falls du blind tippen solltest, solltest du trotzdem mal deinen Blick auf die Tastatur senken und der F1 Taste mal 5 Minuten deiner kostbaren Zeit schenken:
| Zitat: |
Randomize initializes the built-in random number generator with a random value (obtained from the system clock). The random number generator should be initialized by making a call to Randomize, or by assigning a value to RandSeed.
Do not combine the call to Randomize in a loop with calls to the Random function. Typically, Randomize is called only once, before all calls to Random.
|
Man beachte die Hervorhebungen im zweiten Absatz. :roll:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!