![]() |
AW: Zufallsgenerator
Mein Lehrer hat damit wenig zu tun ^^ ist ne abituraufgabe die ich von der Schulleitung bekommen habe :3
hatte auch ne schleife anfangs drin aber die hat die werte nur immer wieder überschrieben ohne das irgendwas geliefert wurde von daher habe ich das wieder verworfen. Danke für deine Hilfe mit freundlichen Grüßen kenshin3672 |
AW: Zufallsgenerator
Naja. Man muss in der Schleife natürlich auch den aktuellen Durchgang abarbeiten.
Folgendes wird nie was
Delphi-Quellcode:
Da würde man ja 5000x "Zahl1" schreiben.
for i := 0; 1 to 5000 then
Ini.WriteInteger('Zufallszahlen', 'Zahl1', Random(10)); Daher
Delphi-Quellcode:
und alles funktioniert. Man muss nur die Zählervariable auswerten.
'Zahl' + IntToStr(i)
Ich weiß nicht ab wann TMemIniFile kompatibel ist. Aber mach doch Folgendes das sollte einen Mü schneller sein
Delphi-Quellcode:
Bei TIniFile wird bei "Write" immer sofort in die Datei geschrieben.
procedure TForm1.Button3Click(Sender: TObject);
var Ini: TCustomIniFile; i: Integer; begin Ini := TMemIniFile.Create(ExtractFilePath(Application.ExeName) + 'Zufallszahlen.ini'); try Randomize; // Die Variable A1 kann man sich sparen for i := 1 to 5000 do Ini.WriteInteger('Zufallszahlen', 'Zahl' + IntToStr(i), Random(10)) finally Ini.UpdateFile; // <= WICHTIG (siehe unten) Ini.Free; end; end; Bei TMemIniFile wird soweit ich weiß erst alles im Speicher vorbereitet und erst bei Aufruf von Ini.UpdateFile; auf die Festplatte geschrieben. |
AW: Zufallsgenerator
Guten Tag,
im weiteren Verlauf der Programmierung würde ich jetzt gerne "beweisen" das ich RandSeed mit
Delphi-Quellcode:
zuweise.
RandSeed := 1;
also habe ich ein quellcode aus einem Forum (an der stelle nochmal danke) genutzt um den RandSeed aufzuspüren. Bei diesen quellcode gebe ich die ersten "Zufallszahlen" in ein array [0..32] und theoretisch sollte dann auch der RandSeed ausgerechnet werden. Allerdings bekomme ich immer die fehlermeldung: Anzahl der Elemente ist von der Deklaration unterschiedlich. Hier mal der Quellcode:
Delphi-Quellcode:
Fehlermeldung erfolgt beim Array.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var T: TDateTime; C: Int64; S: Integer; W: Byte; H: Cardinal; F: Boolean; const Start = - MaxInt; ZF: Array[0..32] of Byte = (8, 1, 9, 1, 1, 8, 4, 0, 3, 9, 5, 0, 0, 2, 3, 1, 8, 9, 3, 7, 9, 6, 7, 6, 3, 8, 9, 5, 7, 1, 4, 7); begin //find start seed and "last" seed T := Now; RandSeed := Start; C := 0; repeat S := RandSeed; For H:=Low(ZF) to High(ZF) do begin W := Random(10); F := (W=ZF[H]); if not F then break; end; inc(C); until (RandSeed=Start) or F; T := Now - T; Showmessage( 'Needed Time: ' + FormatDateTime('hh:nn:ss.zzz', T) +#13#10+ 'Needed Runs: ' + IntToStr(C) +#13#10 + 'Last Seed: ' + IntToStr(RandSeed) +#13#10+ 'StartSeed: ' + IntToStr( S ) ); end; end. Mein Problem ist jetzt halt denkbar einfach die Fehlermeldung und die Tatsache das ich sie nicht wegbekomme :§ würde mich über Tipps freuen. mit freundlichen Grüßen kenshin3672 |
AW: Zufallsgenerator
Werte von 0 bis 32 währen nach meiner Berechnung 33 Werte.
In der Liste zähle ich 32. |
AW: Zufallsgenerator
wenn das jetzt stimmt und alles behebt haste was verdient :D sitz da seit 2 tagen dran und versteh es nich
|
AW: Zufallsgenerator
Zitat:
sagt doch eigentlich ganz genau was das Problem ist ;) Da hättest du auch auf die Idee kommen können mal nachzuzählen :P |
AW: Zufallsgenerator
Zitat:
Daß Du 33 durch 0..32 definiert hast, daran denkst du nicht. Gruß K-H |
AW: Zufallsgenerator
Zitat:
![]() |
AW: Zufallsgenerator
Zitat:
Und wenn dir die Fehlermeldung das schon so sagt, dann lohnt es sich wahrscheinlich nochmal nachzuzählen ;) Also keinen Grund für 2 Tage Ratlosigkeit :duck: |
AW: Zufallsgenerator
Zitat:
Tut Lazaru/FreePascal das auch? Und ich glaube mich zu erinnern, daß ältere Delphis früher auch nicht die Anzahl genannt hatten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz