AGB  ·  Datenschutz  ·  Impressum  







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

Random(2) in schnell

Ein Thema von glkgereon · begonnen am 30. Mär 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von glkgereon
glkgereon

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

Random(2) in schnell

  Alt 30. Mär 2007, 21:37
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?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Random(1) in schnell

  Alt 30. Mär 2007, 21:42
Wenn du "Random(1)" machst kannst du auch gleich 0 schreiben. Schau dir am besten mal die hilfe zu random an.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

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

Re: Random(1) in schnell

  Alt 30. Mär 2007, 21:43
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 , ich meinte natürlich Random(2);
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Random(2) in schnell

  Alt 30. Mär 2007, 21:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

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

Re: Random(2) in schnell

  Alt 30. Mär 2007, 22:19
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
Das hat mich immerhin schonmal von 43 auf 36 Sekunden gebracht bei einem 32Bit Integer als Zwischenspeicher...
Nicht schlecht
Leider scheint Random kein Int64 zu unterstützen

Sonst irgendwelche Ideen?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Random(2) in schnell

  Alt 30. Mär 2007, 22:20
Benutz doch jeweils einen QPC-Ergebniswert als Quelle für 64 Bits. Oder benutz einen Mersenne Twister. Oder...
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

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

Re: Random(2) in schnell

  Alt 30. Mär 2007, 22:41
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 *
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Random(2) in schnell

  Alt 30. Mär 2007, 22:51
QPC ist QueryPerformanceCounter.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Random(2) in schnell

  Alt 30. Mär 2007, 23:06
Zitat von glkgereon:
Der Mersenne Twister hört sich interessant an...
Gibt es von dem eine Implementation in Delphi? *zu negaH schiel *
Der Mersenne Twister ist viel langsamer als das native Random von Delphi. Aber es gibt eine in Delphi.

Was willst du überhaupt machen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#10

Re: Random(2) in schnell

  Alt 31. Mär 2007, 09:06
Zitat von glkgereon:
Leider scheint Random kein Int64 zu unterstützen
Hi,
dafür unterstützt es als Ausgabe 80Bit-Extended Werte
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 15:13 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