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 3 von 5     123 45      
Benutzerbild von Neutral General
Neutral General

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

AW: Zufallsgenerator

  Alt 7. Nov 2016, 16:23
1) Der Startwert (also der 1. generierte Wert, nicht der Seed) wird (genau wie jeder folgende Wert) anhand von RandSeed berechnet. In RandSeed steht wie du schon weißt "standardmäßig" wenn du randomize aufgerufen hast der Zeitstempel von dem Zeitpunkt als du randomize aufgerufen hast. Alle Werte (auch der erste Wert - der Startwert) werden dann aufgrund dieses Zeitstempels berechnet.
Wenn du randseed manuell auf einen anderen Wert setzt, dann ändert sich auch die Zufallszahlenfolge.

2) Den Startwert kannst du nicht direkt setzen. Du kannst nur den Seed verändern wodurch du (evtl) einen anderen Startwert erhältst.
Wenn du den verwendeten Algorithmus kennst könnte man sich wahrscheinlich auch wenn man es draufanlegen würde einen Seed ausrechnen der einen betimmten Startwert generiert.

4) Bin mir nicht sicher was du da visualisieren willst. Du bekommst mit einem RandSeed Wert eine Zufallsreihenfolge und mit einem anderen Seed eine komplett andere Folge.


EDIT (WICHTIG):
Ich hab dich endlich verstanden. Du hast das mit den Zufallszahlen komplett falsch verstanden

RandSeed ist nicht die Zufallszahl! Wenn du einen festen Wert als RandSeed angibst, z.B. "123",
wird dieser als BASIS für einen Algorithmus genutzt der dir aus diesem Seed Zufallszahlen generiert (Mathe).

Auch die Standard Delphi Zufallszahlen selbst sind NICHT GLEICH der Uhrzeit, sondern die Uhrzeit zum Zeitpunkt des randomize-Aufrufs dient nur als GRUNDLAGE für die generierten Zufallszahlen.
Quasi als Eingabe/Startwert für den Zufallszahlenalgorithmus.

Den RandSeed also dauernd zu verändern macht keinen Sinn. Es wird nicht zufälliger wenn du die CPU-Temperatur nimmst und es wird auch nicht schlechter wenn du einen festen Startwert (z.B. 123) nimmst.
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."

Geändert von Neutral General ( 7. Nov 2016 um 16:33 Uhr)
  Mit Zitat antworten Zitat
kenshin3672

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

AW: Zufallsgenerator

  Alt 7. Nov 2016, 17:00
naa nich falsch verstanden sondern nur kacke formuliert.
Mir war bewusst das der RandSeed immer nur der momentante Wert ist (halt wie du gesagt hast -> hab ich einfach mal vorausgesetzt).
Wenn ich den Zeitpunkt änder bekomme ich ja (vllt) einen anderen Startwert (also 1.Ergebnis).
Mir geht es nur darum den RandSeed zu ändern und rein theoretisch nachzuweisen das die zufallszahlen von eben diesen Wert abhängen. Das es in der Praxis auch die gleichen werte sein können sei da hingestellt ^^ geht nur um das Prinzip das wenn sich mein RandSeed ändert sich auch mein Startwert ändert und so andere Zufallszahlen entstehen können.
Weil theoretisch wäre es ja dann möglich (wenn RandSeed und Startwert bekannt sind) voraus zu sehen welcher Wert als nächstes erscheinen wird (auch wenn es da immernoch einen gewissen Raum für Ergebnisse gibt).


ne idee wie man RandSeed aufrufen kann? lese gerade parallel was dazu aber wenn ich gerade schon hier am tippen bin kann ich auch gleich fragen
  Mit Zitat antworten Zitat
kenshin3672

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

AW: Zufallsgenerator

  Alt 7. Nov 2016, 17:02
Die Visualisierung soll in Form einer Präsentation erfolgen. Heißt den aufbau des jeweilligen Zufallsgenerators zeigen und mit den anderen vergleichen -> unterschiede aufzeigen. Und dann halt noch sagen wieso die ergebnisse so entstehen wie sie entstehen wo wir wieder beim RandSeed wären ^^

aber das hat noch ordentlich zeit erstmal das mit RandSeed verstehen wie ich den ändern kann etc.



nochmal so ne frage dazu: wie setzt Delphi die Uhrzeit(Zeitpunkt des aufrufens) in einen Startwert um? weil dahinter muss ja auch noch eine bestimmte Formel stecken
  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
 
#24

AW: Zufallsgenerator

  Alt 7. Nov 2016, 17:27
Wie schon mehrmals mehr oder weniger direkt gesagt wurde: Du kannst "RandSeed" eine Zahl zuweisen. Das ist einfach nur eine globale Variable:
Delphi-Quellcode:
RandSeed := 123;
Caption := IntToStr(random(100)); // 85
Über GetTickCount bzw. QueryPerformanceTimer bekommt man die "Uhrzeit" (nicht wirklich die Uhrzeit aber sowas in der Art) als Integer.
Dieser Wert wird als Startwert genommen und nachdem ein paar Mathematische Operationen mit gewissen Konstanten drauf angewendet wurden hast du deine 1. Zufallszahl.

Falls dus noch nicht gelesen hast (da sind auch Algorithmen verlinkt mit denen solche Zufallszahlen generiert werden können):
https://de.wikipedia.org/wiki/Zufall...lengeneratoren
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."

Geändert von Neutral General ( 7. Nov 2016 um 17:31 Uhr)
  Mit Zitat antworten Zitat
kenshin3672

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

AW: Zufallsgenerator

  Alt 7. Nov 2016, 17:30
oh.. danke
hab einen artikel gefunden wo RandSeed etwas schwieriger aufgerufen und geändert wird aber das es auch einfach nur ne globale var is is auch schön ^^
  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
 
#26

AW: Zufallsgenerator

  Alt 7. Nov 2016, 17:32
Hab grad noch meinen Beitrag editiert, falls du den Link zu Wikipedia zum Thema noch nicht gesehen hast
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
 
#27

AW: Zufallsgenerator

  Alt 7. Nov 2016, 17:36
^^ schon gestern angelesen. Danke nochmal für die Mühen und Antworten hat viel gebracht
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#28

AW: Zufallsgenerator

  Alt 7. Nov 2016, 18:51
Mir geht es nur darum den RandSeed zu ändern und rein theoretisch nachzuweisen das die zufallszahlen von eben diesen Wert abhängen. Das es in der Praxis auch die gleichen werte sein können sei da hingestellt ^^ geht nur um das Prinzip das wenn sich mein RandSeed ändert sich auch mein Startwert ändert und so andere Zufallszahlen entstehen können.
Das kannst du auch "praktisch" nachweisen. Wenn du 1000 Mal den RandSeed zuweist und 10 Zufallszahlen ziehst, werden diese stets identisch sein. Sobald du einen anderen RandSeed zuweist, werden sie garantiert nicht identisch sein.
Du kannst dir Random() so vorstellen, dass es eine gemischte Liste von Zahlen hat, die 2^32 Elemente lang ist. Der RandSeed ist der Index des Elements wo die erste Zufallszahl gezogen wird. Jedes Random gibt dir das Element zurück (ggf. mod Maximalwert) und setzt den Index ein weiter.

Weil theoretisch wäre es ja dann möglich (wenn RandSeed und Startwert bekannt sind) voraus zu sehen welcher Wert als nächstes erscheinen wird (auch wenn es da immernoch einen gewissen Raum für Ergebnisse gibt).
Das geht auch in der Praxis. Siehe zum Beispiel diesen Thread: http://www.entwickler-ecke.de/viewto...=680027#680027
==> Wenn du von dem Delphi-Zufallsgenerator 100 Zahlen zwischen 0 und 255 ziehst, genügen die ersten 8 Zahlen locker um die ganze folgende Sequenz vorherzusagen.
  Mit Zitat antworten Zitat
kenshin3672

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

AW: Zufallsgenerator

  Alt 7. Jan 2017, 11:51
Guten Tag,

habe eine fortsetzende Frage zu dem Thema Zufallsgenerator bzw zu der Auswertung der Ergebnisse.
Habe den zufallsgenerator bzw die blackbox "randomize" und nutze RandSeed zum beeinflussen wenn nötig. Das erstmal zu dem was ich gemacht habe.
Meine weitere Aufgabe ist es jetzt min. 5000 ergebnisse ausgeben zu lassen und die in einer INI.Datei zu speichern.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  Ini: TIniFile;
A1 : Integer;
begin

 Ini:=TIniFile.Create('C:Zufallszahlen.ini');
   try
  //befehle die ausgeführt werden sollen
   randomize;

begin
A1 := random(10);
Ini.WriteInteger ('Section1','zahl1',A1);
end;
  finally
    Ini.Free;
  end;
end;


end.
Das erstellen und übertragen eines einzelnen Wertes bzw ergebnis funktioniert und könnte jetzt auch 5000 weitere auf die art machen wäre mir aber zu zeitaufwendig von daher meine frage: Wie kann man diese möglichkeit umgehen?

Versucht habe ich auch schon einfach eine 2. Variable hochzählen zu lassen allerdings gibt es da ein Problem bei der Übertragung in die INI.Datei.


Edit:Hatte auch schon an ein Array gedacht weiß allerdings nicht wirklich wie ich das umsetzen soll.
Nutze übrigens Notepad++ um die Daten zu speichern (kann aber auch gerne was anderes sein)

Würde mich über hilfreiche Antworten freuen

mit freundlichen Grüßen
kenshin3672

Geändert von kenshin3672 ( 7. Jan 2017 um 11:58 Uhr)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#30

AW: Zufallsgenerator

  Alt 7. Jan 2017, 12:50
Hat euch euer Lehrer noch nix von Schleifen erzählt?

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
 Ini: TIniFile;
 i: Integer;
begin
 Ini := TIniFile.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.Free;
 end;
end;

{*

[Zufallszahlen]
Zahl1=8
Zahl2=2
Zahl3=4
usw.

*}

Geändert von a.def ( 7. Jan 2017 um 12:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 11:43 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