Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Random(2) in schnell (https://www.delphipraxis.net/89420-random-2-schnell.html)

glkgereon 30. Mär 2007 21:37


Random(2) in schnell
 
Hi,

Ich habe ein Programm in dem ich sehr oft eine 1:1 wahrscheinlichkeit berechnen muss.
nun stehe ich vor dem Problem das Random(2) vermutlich den größten Teil meiner Laufzeit in Anspruch nimmt....was etwas unbefriedigend ist.

Das Problem ist dass ich nicht genau testen kann wieviel Random in anspruch nimmt, da die benötigten Durchläufe direkt vom ergebnis von Random abhängen. Wenn ich also immer 1 nehme ist mein Programm zwar sofort durch, hat aber auch nur einen winzigen Bruchteil an durchläufen gehabt, wenn ich 0 nehme ist es eine endlosschleife.

Nun stellt sich natürlich die Frage nach alternativen...

Ich habe es bereits mit GetTickCount (Auflösung zu gering), QueryPerformanceFrequency (Nicht zufällig genug??? jedenfalls ne endlosschleife) und Mouse (u.ä. auch net zufällig genug) versucht...reicht aber alles nicht.

Was gäbe es noch an Alternativen?

SirThornberry 30. Mär 2007 21:42

Re: Random(1) in schnell
 
Wenn du "Random(1)" machst kannst du auch gleich 0 schreiben. Schau dir am besten mal die hilfe zu random an.

glkgereon 30. Mär 2007 21:43

Re: Random(1) in schnell
 
Zitat:

Zitat von SirThornberry
Wenn du "Random(1)" machst kannst du auch gleich 0 schreiben. Schau dir am besten mal die hilfe zu random an.

Schande über mich :duck: , ich meinte natürlich Random(2); :wall:

cruiser 30. Mär 2007 21:48

Re: Random(2) in schnell
 
Nur eine Idee... generiere eine Zufallszahl, mehrere Bytes, und speichere die Bitfolge in meinetwegen einem Array of Boolean. Das Array berechnest du dann halt alle 32, 64, whatever Durchläufe neu.

glkgereon 30. Mär 2007 22:19

Re: Random(2) in schnell
 
Zitat:

Zitat von cruiser
Nur eine Idee... generiere eine Zufallszahl, mehrere Bytes, und speichere die Bitfolge in meinetwegen einem Array of Boolean. Das Array berechnest du dann halt alle 32, 64, whatever Durchläufe neu.

Vielen Dank :-D
Das hat mich immerhin schonmal von 43 auf 36 Sekunden gebracht bei einem 32Bit Integer als Zwischenspeicher...
Nicht schlecht :thumb:
Leider scheint Random kein Int64 zu unterstützen :?

Sonst irgendwelche Ideen?

Dax 30. Mär 2007 22:20

Re: Random(2) in schnell
 
Benutz doch jeweils einen QPC-Ergebniswert als Quelle für 64 Bits. Oder benutz einen Mersenne Twister. Oder... ;)

glkgereon 30. Mär 2007 22:41

Re: Random(2) in schnell
 
Zitat:

Zitat von Dax
Benutz doch jeweils einen QPC-Ergebniswert als Quelle für 64 Bits. Oder benutz einen Mersenne Twister. Oder... ;)

Sry, aber QPC sagt mir gar nichts :?

Der Mersenne Twister hört sich interessant an...
Gibt es von dem eine Implementation in Delphi? *zu negaH schiel :wink: *

3_of_8 30. Mär 2007 22:51

Re: Random(2) in schnell
 
QPC ist QueryPerformanceCounter.

alzaimar 30. Mär 2007 23:06

Re: Random(2) in schnell
 
Zitat:

Zitat von glkgereon
Der Mersenne Twister hört sich interessant an...
Gibt es von dem eine Implementation in Delphi? *zu negaH schiel :wink: *

Der Mersenne Twister ist viel langsamer als das native Random von Delphi. Aber es gibt eine in Delphi.

Was willst du überhaupt machen?

Der_Unwissende 31. Mär 2007 09:06

Re: Random(2) in schnell
 
Zitat:

Zitat von glkgereon
Leider scheint Random kein Int64 zu unterstützen :?

Hi,
dafür unterstützt es als Ausgabe 80Bit-Extended Werte :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.
Seite 1 von 5  1 23     Letzte »    

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