Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Zufallsgenerator (https://www.delphipraxis.net/144269-zufallsgenerator.html)

kenshin3672 7. Jan 2017 12:54

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

a.def 7. Jan 2017 15:06

AW: Zufallsgenerator
 
Naja. Man muss in der Schleife natürlich auch den aktuellen Durchgang abarbeiten.

Folgendes wird nie was
Delphi-Quellcode:
for i := 0; 1 to 5000 then
 Ini.WriteInteger('Zufallszahlen', 'Zahl1', Random(10));
Da würde man ja 5000x "Zahl1" schreiben.

Daher
Delphi-Quellcode:
'Zahl' + IntToStr(i)
und alles funktioniert. Man muss nur die Zählervariable auswerten.

Ich weiß nicht ab wann TMemIniFile kompatibel ist. Aber mach doch Folgendes das sollte einen Mü schneller sein
Delphi-Quellcode:
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 TIniFile wird bei "Write" immer sofort in die Datei geschrieben.
Bei TMemIniFile wird soweit ich weiß erst alles im Speicher vorbereitet und erst bei Aufruf von Ini.UpdateFile; auf die Festplatte geschrieben.

kenshin3672 29. Jan 2017 13:59

AW: Zufallsgenerator
 
Guten Tag,

im weiteren Verlauf der Programmierung würde ich jetzt gerne "beweisen" das ich RandSeed mit
Delphi-Quellcode:
RandSeed := 1;
zuweise.
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:
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.
Fehlermeldung erfolgt beim Array.
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

bnreimer42 29. Jan 2017 14:10

AW: Zufallsgenerator
 
Werte von 0 bis 32 währen nach meiner Berechnung 33 Werte.
In der Liste zähle ich 32.

kenshin3672 29. Jan 2017 14:12

AW: Zufallsgenerator
 
wenn das jetzt stimmt und alles behebt haste was verdient :D sitz da seit 2 tagen dran und versteh es nich

Neutral General 30. Jan 2017 09:39

AW: Zufallsgenerator
 
Zitat:

Zitat von kenshin3672 (Beitrag 1360254)
wenn das jetzt stimmt und alles behebt haste was verdient :D sitz da seit 2 tagen dran und versteh es nich

Anzahl der Elemente ist von der Deklaration unterschiedlich.

sagt doch eigentlich ganz genau was das Problem ist ;)
Da hättest du auch auf die Idee kommen können mal nachzuzählen :P

p80286 30. Jan 2017 10:49

AW: Zufallsgenerator
 
Zitat:

Zitat von Neutral General (Beitrag 1360315)
Da hättest du auch auf die Idee kommen können mal nachzuzählen :P

Nee, Du sitzt da und fragst Dich was das soll, weil Du hast doch 32 Einträge.
Daß Du 33 durch 0..32 definiert hast, daran denkst du nicht.

Gruß
K-H

madas 30. Jan 2017 13:21

AW: Zufallsgenerator
 
Zitat:

Zitat von kenshin3672 (Beitrag 1360254)
wenn das jetzt stimmt und alles behebt haste was verdient :D sitz da seit 2 tagen dran und versteh es nich

Ne Suche nach der Fehlermeldung hätte es auch getan.

bazinga

Neutral General 30. Jan 2017 13:27

AW: Zufallsgenerator
 
Zitat:

Zitat von p80286 (Beitrag 1360332)
Nee, Du sitzt da und fragst Dich was das soll, weil Du hast doch 32 Einträge.
Daß Du 33 durch 0..32 definiert hast, daran denkst du nicht.

Daran musst du nicht mal denken weil die Fehlermeldung dir explizit sagt, dass du mehr oder weniger Elemente im Array hast als definiert.
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:

himitsu 30. Jan 2017 14:15

AW: Zufallsgenerator
 
Zitat:

Zitat von Neutral General (Beitrag 1360373)
Daran musst du nicht mal denken weil die Fehlermeldung dir explizit sagt, dass du mehr oder weniger Elemente im Array hast als definiert.

Kommt drauf an.
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.
Seite 4 von 5   « Erste     234 5      

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