AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zufallsfunktion selbst schreiben... kann jemand helfen?
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallsfunktion selbst schreiben... kann jemand helfen?

Ein Thema von mojo777 · begonnen am 5. Sep 2004 · letzter Beitrag vom 6. Sep 2004
Antwort Antwort
Seite 1 von 3  1 23      
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#1

Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 14:52
Hallo,

wie funktionieren eigenltich ramdomfunktionen? also ich weiss, dass es in jeder(vernunftigen) Programmiersprache eine Randomfunktion gibt, aber was für eine Idee ist es, die dahinter steckt?

Gruß
Mojo

Muh macht die kUh
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#2

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 15:18
Bin zwar kein Profi dadrin. Hoffe aber ich erklär das richtig:

Es gibt sowas wie eine globale Variable, die am Anfang 0 ist und bei jedem aufruf der Random-funktion um eins erhöht wird. Aus dieser Zahl wird mit einem Algorithmus, der immer möglichst verschiedene Zahlen ausgibt, das random errechnet.
Sieht man auch sehr gut, wenn man diesen Code ausführt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Listbox1.Items.Add(inttostr(random(1024)));
end;
Es wird immer rauskommen:

Zitat von Listbox1:
0
32
881
207
279
...
Es sei denn, man ruft vorher randomize auf.
Durch randomize wird der globalen Zählerariable ein Wert zugewießen, der anhand von Gettickcount errechnet wird
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#3

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 15:20
hi,
also so weit ich weiss hängt das irgendwie mit der Systemzeit ab !
Diese wird ausgelesen und anhand der immer verschiedenen Zeit (vielleicht in Millisekunden oder sogar Takte) eine Zufallszahl generiert !

Aber genau hab ich mich auch noch nicht damit beschäftigt !

cu,
stefan2005

//Edit: Zu spät
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 16:08
So wie es Sleepy erklärt hat kommt es schon hin, allerdings kommt nicht immer diese Zahlenfolge raus - da:

Das mit der Systemzeit stimmt auch nur bedingt, undzwar wird beim Aufruf von Randomize die Systemzeitgenommen und als Startwert an den Zufallsgenerator übergeben
Zitat von Die OH:
Randomize initialisiert den integrierten Zufallszahlengenerator mit einem zufälligen Wert (der aus der Systemzeit abgeleitet wird). Der Zufallszahlengenerator sollte initialisiert werden, indem die Prozedur Randomize aufgerufen oder der Variablen RandSeed ein Wert zugewiesen wird.
Mit RandSeed kann man auch einen eigenen Startwert festlegen.

Und Random, RandomRange... errechnen dann den Wert

Also es wird immer wieder die gleiche Zahlenfolge zurückgegeben, aber nicht das ihr das jetzt so einfach hinnehmt, denn
Zitat von Die OH:
Hinweis: Die Implementierung der Funktion Random kann sich bei einer anderen Compiler-Version ändern. Sie sollten Random daher nicht für Verschlüsselungen oder andere Einsatzbereiche verwenden, in denen reproduzierbare Pseudozufallszahlen benötigt werden.


Der große Lottogenerator arbeitet deßhalb auch nicht auf diesem Prinzip, da ja so die nächsten Lottozahlen rein theoretisch irgendwann mal vorhergesagt werden könnten - dort wird gewissermasen das nicht vorhersehbare Eigenschwingverhalten von Transistoren gemessen...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#5

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 18:04
Zitat von himitsu:
dort wird gewissermasen das nicht vorhersehbare Eigenschwingverhalten von Transistoren gemessen...
Also known as quantenphysikalischer Zufall.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 18:28
*kram c-buch raus und übersetz in pascal*

Zitat:
Zufallsfunktion selbst schreiben... kann jemand helfen?
ja ich hab ma sonne art zufallsfunktion rausgesucht:

Delphi-Quellcode:
const
  m=10000000;
  m1=10000;

var
  a:longint;

function mult(p, q:longint):longint;
var p1, p0, q1, q0:longint;
begin
p1:=p/m1;
p0:=p mod m1;
q1:=q/m1;
q0:=q mod m1;
result:= (((p0*q1+p1*q0) mod m1)*m1+p0*q0 mod m;
end;

procedure seedrand(seed:longint);
begin
a:=seed;
end;

function getrandom:longint;
const
  b=pi*10000000;
begin
result:=(mult(a,b) +1 ) mod m;
inc(a);//die zeile is von mir, da man sonst seed immer wieder aufrufen müsste.....
end;
ich hoffe ich hab das richtig übersetzt, da es in besagtem buch als c++-klasse dargestellt war...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 18:43
ps: echte zufallszahlen kannst du z.b. dadurch erhalten, dass du eine zeitlang die mausbewegungen abfängst und aus den koordinaten deine zahl berechnest. ziemlich unmöglich das zu reproduzieren!
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 18:46
trotzdem: es gibt KEINE echten zufallszahlen (jedenfalls nicht in der informatik)

du kannst (theoretisch) ALLES reproduzieren und mit entsprechenden logs genau nachvollziehen, wie es zu dieser zahl gekommen ist..

aber es ist klar das die heutigen methoden gut genug bzw völlig ausreichend sind für die meissten anwendungen....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 18:49
oh doch es gibt auch in der informatik echte zufallszahlen. stell dir vor du fährst mit dem auto über eine buckelpiste, misst die federungsbelastung, nimmst das blöcken einer schafherde auf und berechnest aus diesen werten eine zufallszahl - die ist nicht reproduzierbar!
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: Zufallsfunktion selbst schreiben... kann jemand helfen?

  Alt 5. Sep 2004, 18:51
Zitat:
stell dir vor du fährst mit dem auto über eine buckelpiste, misst die federungsbelastung, nimmst das blöcken einer schafherde auf und berechnest aus diesen werten eine zufallszahl - die ist nicht reproduzierbar!
Zitat:
oh doch es gibt auch in der informatik echte zufallszahlen
was verstehst du unter informatik`?

ich mein also in der informatik erstellte, ohne "reale"/"weltliche" oder was auch immer "inputs"

(wer verstanden hat was ich meine: repekt!)
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 09:07 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