AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallsgenerator

Offene Frage von "kwhk"
Ein Thema von Jonski · begonnen am 3. Dez 2009 · letzter Beitrag vom 30. Jan 2017
Antwort Antwort
Seite 1 von 2  1 2      
kenshin3672

Registriert seit: 22. Okt 2016
19 Beiträge
 
#1

AW: Zufallsgenerator

  Alt 7. Nov 2016, 13:38
morgen,
habe zu dem Zufallsgenerator mal ne frage:
Mir ist bekannt das sich der Zufallsgenerator von Delphi nach Uhrzeit und Datum richtet, aber wie genau entstehen die Startparameter des Randomize und vorallem ist es möglich den Zufallsgenerator zu beeinflussen bzw zu Manipulieren?
Würde mich über jede Antwort dazu freuen jeder Tipp/Hinweis willkommen, suche nämlich schon länger danach ohne wirklichen Erfolg..


In der Theorie gibt es keinen Unterschied zwischen Theorie und Praxis. In der Praxis schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zufallsgenerator

  Alt 7. Nov 2016, 14:11
Schau mal in die OH.

Bei Delphi-Referenz durchsuchenRandom und Delphi-Referenz durchsuchenRandomize wird z.B. auch Delphi-Referenz durchsuchenRandSeed verlinkt sein.

RandSeed ist der Initialwert des Generators (bzw. daraus wird der nächste Zufallswert "berechnet")
und Randomize nimmt "aktuell" im Windows die Laufzeit des Systems (früher mal GetTickCount und derzeit QueryPerformanceCounter, weil es zuviele Idioten gab, die Randomize viel zu oft aufgerufen haben und sich dann wunderten, dass ständig der selbe Wert rauskommt)

Delphi-Quellcode:
// Was die Trotel praktisch immer gemacht hatten und da GetTickCount da oft genug den selben Wert liefer, kam auch mehrmals das Selbe bei Random raus
for i := 0 do 1000 do begin
  Randomize;
  MachWasMit(Random);
end;

Man kann also mit Random und dem selben Startwert "aktuell" immer wieder die selben Zahlenfolgen erzeugen,
aber wer denkt das sei immer so, der hat es verdient, wenn es knallt, sollte Emba irgendwann mal etwas am internen Generator ändern.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 7. Nov 2016 um 14:15 Uhr)
  Mit Zitat antworten Zitat
kenshin3672

Registriert seit: 22. Okt 2016
19 Beiträge
 
#3

AW: Zufallsgenerator

  Alt 7. Nov 2016, 14:59
oke top danke
weißt du zufällig wie man die Startwerte ändern kann? also meinetwegen statt der Systemlaufzeit die spezielle Temperatur des Prozessors nutzen kann?

weil ich habe als aufgabe zwei zufallsgeneratoren mit verschiedenen Startparametern zu vergleichen. Hänge halt gerade an der Beeinflussung und das grundverändernste ist es der Startwert der geändert wird (auch wenn es sich weiterhin nur um PseudoZufallszahlen handelt )

Geändert von kenshin3672 ( 7. Nov 2016 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Benedikt Magnus

Registriert seit: 6. Jul 2012
Ort: Bonn
190 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Zufallsgenerator

  Alt 7. Nov 2016, 15:01
oke top danke
weißt du zufällig wie man die Startwerte ändern kann? also meinetwegen statt der Systemlaufzeit meinetwegen die spezielle Temperatur des Prozessors nutzen kann?

weil ich habe als aufgabe zwei zufallsgeneratoren mit verschiedenen Startparametern zu vergleichen. Hänge halt gerade an der Beeinflussung und das grundverändernste ist es der Startwert der geändert wird (auch wenn es sich weiterhin nur um PseudoZufallszahlen handelt )
Das geht, indem du RandSeed manuell zuweist.

Da stellt sich mir die Frage, wie zufällig ist dieser Zufall, wenn man als Startparameter einen echten Zufallswert verwendet?
  Mit Zitat antworten Zitat
kenshin3672

Registriert seit: 22. Okt 2016
19 Beiträge
 
#5

AW: Zufallsgenerator

  Alt 7. Nov 2016, 15:20
naja aber wenn ich RandSeed einen dauerhaft gleichbleibenden Wert zuweise habe ich ja immer den selben Startwert also ziemlich sicher kein Zufallsgenerator mehr da ich den Algorithmus (theoretisch) nachvollziehen könnte.
Kann ich bei RandSeed auch einen wechselhaften Wert eintragen (wechselnde Temperatur etc.)?

Geändert von kenshin3672 ( 7. Nov 2016 um 15:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Zufallsgenerator

  Alt 7. Nov 2016, 15:29
Du kannst bei randseed eine Zahl angeben. Was diese Zahl für dich bedeutet ist dem Zufallsgenerator ziemlich egal
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
kenshin3672

Registriert seit: 22. Okt 2016
19 Beiträge
 
#7

AW: Zufallsgenerator

  Alt 7. Nov 2016, 15:38
naja eben nich. wenn ich bei RandSeed die Prozessertemp. angebe (die sich ja normalerweise ändert) habe ich ja auch unterschiedliche Startwerte für meinen Zufallsgenerator.
Frage: kann ich RandSeed folgendermaßen initalisieren?
RandSeed := prozessertemp (prozessertemp. wird mit hoher wahrscheinlichkeit anders formuliert ^^)
  Mit Zitat antworten Zitat
kenshin3672

Registriert seit: 22. Okt 2016
19 Beiträge
 
#8

AW: Zufallsgenerator

  Alt 29. Jan 2017, 13:59
Guten Tag,

im weiteren Verlauf der Programmierung würde ich jetzt gerne "beweisen" das ich RandSeed mit 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
  Mit Zitat antworten Zitat
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
129 Beiträge
 
Delphi 12 Athens
 
#9

AW: Zufallsgenerator

  Alt 29. Jan 2017, 14:10
Werte von 0 bis 32 währen nach meiner Berechnung 33 Werte.
In der Liste zähle ich 32.
Björn Reimer
  Mit Zitat antworten Zitat
kenshin3672

Registriert seit: 22. Okt 2016
19 Beiträge
 
#10

AW: Zufallsgenerator

  Alt 29. Jan 2017, 14:12
wenn das jetzt stimmt und alles behebt haste was verdient sitz da seit 2 tagen dran und versteh es nich
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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