Suche schnellen Zufallszahlengenerator (was: [Ada][Gnat] Was sind 'global constructors keyed to...')



Martin Klaiber <martinkl@xxxxxxxxxxxxxxxxxx> wrote:
Florian Weimer <fw@xxxxxxxxxxxxx> wrote:

Sieht nach einen Meßfehler aus.

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
22.51 0.70 0.70 1365788 0.00 0.00 vdp_dp__ma_random__randomX
18.01 1.26 0.56 2731586 0.00 0.00 vdp_dp__ma_random__square_mod_nX

[...]

Dass der Zufallszahlengenerator so oft aufgerufen wird, ist richtig.
Ich hätte allerdings nicht gedacht, dass das so viel Zeit frisst. Da
muss ich mir noch was anderes ausdenken...

Ich habe das Programm zwischenzeitlich weiter optimiert. Problematisch
bleiben weiterhin die Aufrufe des Ada-eigenen Zufallszahlengenerators,
die inzwischen rund 50% der Zeit fressen. Um zu verifizieren, ob es
sich dabei um einen Messfehler handelt, oder die Aufrufe tatsächlich
so lange dauern, habe ich probeweise mal was ganz Einfaches gemacht:

Ich fülle ein Array mit Zufallszahlen, es ersetzt den Generator. Wenn
ich am Ende des Arrays ankomme, bestimme ich den neuen Eintrittspunkt
in das Array per Zufall und lese es wieder bis zum Ende aus. Nach 100x
Auslesen generiere ich den Inhalt des Arrays neu. Ergebnis: der Code
läuft doppelt so schnell wie vorher, allerdings ist die Qualität der
Zufallszahlen deutlich schlechter.

Ok, nun suche ich nach einem schnellen Algorithmus für einen Generator.
Dass die Qualität/Periodendauer vermutlich im umgekehrten Verhältnis
zur Geschwindigkeit steht, davon gehe ich aus, aber vielleicht lässt
sich doch ein brauchbarer Kompromiss finden. Ich brauche Ganzzahlen im
Bereich von 1 bis 6.

Vielen Dank,
Martin
.



Relevant Pages

  • I want to make a C# library of some classes
    ... I have a C++ class library (and application generator, ... member functions which return elements of those arrays. ... Note the current code is targeted to VS 2003, but I can target VS 2005 ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Math.random
    ... That's not the only possible algorithm; ... without much difficulty implement a long shift-register generator; ... doublevalue or null/undefined/false for auto reseeding, ... I think 0 to 364 would be better; it goes well with zero-based arrays, ...
    (comp.lang.javascript)
  • Re: Zufallszahlen skalieren
    ... die schneller ist oder die mit Sicherheit (nach einer ... Evtl. ... -gleichverteilten Zufallszahlen ... Input (Zufallsfolge aus dem Generator) ...
    (de.sci.mathematik)
  • großer Ganzzahl-Datentyp
    ... für das ich großen Mengen an Zufallszahlen ... von guter Qualität brauche. ... liegt beim C++ - Generator bei ... Was mir fehlt, ist ein Ganzzahl-Datentyp, der ...
    (microsoft.public.de.vc)
  • Re: gleichverteilte Zufallszahl zw. 0 und 99 mit Wuerfel
    ... zitierte Kritik nicht. ... dieser drei Zahlen liefert (und das tut mein Generator). ... verlangt ein bestimmtens Testsystem für Zufallszahlen ...
    (de.sci.mathematik)