Thread View: de.comp.sys.amiga.tech
4 messages
4 total messages
Started by Marc 'Nepomuk' Heuler
Thu, 21 Dec 1995 21:16
Reproduzierbarer Zufall
Author: Marc 'Nepomuk' Heuler
Date: Thu, 21 Dec 1995 21:16
Date: Thu, 21 Dec 1995 21:16
27 lines
1700 bytes
1700 bytes
Für mein aktuelles Projekt benötige ich eine Funktion, die aus sich wenig verändernden Eingangsdaten stark veränderte Ergebnisdaten erzeugt. Die Eingabe könnte zB eine ständig aufsteigende Zahl sein (zB Tage seit Zeitpunkt x), die Ergebnisse sollen denen eines Pseudo-Zufallsgenerators entsprechen (schwer vorhersagbares Ergebnise trotz Kenntnis der Ergebnisse nah verwandter Eingaben). Wichtig ist aber, daß dies reproduzierbar ist. Die Eingaben müßen auch in falscher Reihenfolge und unvollständig gemacht werden können, ohne daß einer Eingabe dadurch ein anderes Ergebnis zugeordnet würde. Zuerst habe ich einige einfache Rechenschritte versucht, aber das Ergebnis ist nicht 'zufällig' genug. Dann habe ich MD5SUM benutzt. Allerdings liegt das Ergebnis immer im Mittelfeld. Wenn ich die Summe zu einer Zahl 0 <= x <= 1 zusammenfaße, liege ich immer in der Nähe von 0.5, ganz selten mal bei 0.8 oder 0.2 und in meinen Versuchen eigentlich nie noch näher am Extrem. Möglicherweise hat MD5SUM Einschränkungen, die ein Ergebnis wie 000000000000 nicht zulassen? Da ich meiner Funktion einen Wertebereich vorgebe, der auch einigermaßen gleichmäßig ausgenutzt werden soll (er wurde mit Bedacht gewählt), scheint MD5SUM auch nicht so gut geeignet zu sein. Was könnte ich noch probieren?
Re: Reproduzierbarer Zufall
Author: Stefan Reich
Date: Sat, 23 Dec 1995 15:04
Date: Sat, 23 Dec 1995 15:04
36 lines
2115 bytes
2115 bytes
Am 21.12.1995 saugte sich marc@aargh.incubus.sub.org (Marc 'Nepomuk' Heuler) zum Thema "Reproduzierbarer Zufall" folgende (unzusammenhängende) Worte aus den Fingern, wobei ich einen Kommentar nicht vermeiden kann : > Für mein aktuelles Projekt benötige ich eine Funktion, die aus sich wenig > verändernden Eingangsdaten stark veränderte Ergebnisdaten erzeugt. > > Die Eingabe könnte zB eine ständig aufsteigende Zahl sein (zB Tage seit > Zeitpunkt x), die Ergebnisse sollen denen eines Pseudo-Zufallsgenerators > entsprechen (schwer vorhersagbares Ergebnise trotz Kenntnis der Ergebnisse > nah verwandter Eingaben). > > Da ich meiner Funktion einen Wertebereich vorgebe, der auch einigermaßen > gleichmäßig ausgenutzt werden soll (er wurde mit Bedacht gewählt), scheint > MD5SUM auch nicht so gut geeignet zu sein. > > Was könnte ich noch probieren? Hmmm.. du könntest z.B. in einem einmaligen Durchlauf ein Feld von echten Zufallszahlen (z.B. 200) erzeugen. Dieses Feld muß dann ins Programm integriert werden. Fortan wird jeder Eingabezahl durch eine mehr (sinus, cosinus...) oder weniger (Modulo...) komplizierte Funktion ein Element des Zufallsfeldes zugeordnet. Hmm...hört sich doch gar nicht schlecht an, oder? -- .---------------_-------------. Freak@Shannara.mcnet.de | Verzweifelt_ // Der Wider- | BUND -- Live dabei !! | nicht... \X/ stand lebt ! | Bald mit 25 MHz... `-----------------------------' A500 / 5MB / Kick2.0 / 3x 3.5"DD / 120MB At-Bus / Toshiba 4101B Ach, übrigens: Diplomacy is the art of saying "nice doggy" until you can find a rock.
Re: Reproduzierbarer Zufall
Author: Thomas Fischbacher
Date: Wed, 27 Dec 1995 11:36
Date: Wed, 27 Dec 1995 11:36
41 lines
2666 bytes
2666 bytes
Auf marc@aargh.incubus.sub.org (Marc 'Nepomuk' Heuler)'s Mail vom (21.12.1995) <Reproduzierbarer Zufall>
hin konnte ich mich (mal wieder) nicht zurueckhalten, auch etwas zu diesem
Thema zu tippen...
MH> Fnr mein aktuelles Projekt ben÷tige ich eine Funktion, die aus sich wenig
MH> verSndernden Eingangsdaten stark verSnderte Ergebnisdaten erzeugt.
MH>
MH> Die Eingabe k÷nnte zB eine stSndig aufsteigende Zahl sein (zB Tage seit
MH> Zeitpunkt x), die Ergebnisse sollen denen eines Pseudo-Zufallsgenerators
MH> entsprechen (schwer vorhersagbares Ergebnise trotz Kenntnis der Ergebnisse
MH> nah verwandter Eingaben).
MH>
MH> Wichtig ist aber, da# dies reproduzierbar ist. Die Eingaben mn#en auch in
MH> falscher Reihenfolge und unvollstSndig gemacht werden k÷nnen, ohne da#
MH> einer Eingabe dadurch ein anderes Ergebnis zugeordnet wnrde.
Ich weiss, was Du meinst... vor langer Zeit hatte ich mal einen
Landschaftsgenerator geschrieben, der mit dieser Methode aus den Hoehen
von zwei Punkten iterativ die Hoehen der Zwischenpunkte ermittelt, und
somit riesige Karten erstellt hat, ohne RAM belegen zu muessen. Ich hab
damals eine Funktion verwendet, die offenbar auch HP mal in den
Taschenrechnern eingesetzt haben muss. Hauptmerkmale: schnarchlangsam,
und: liefert ein wenig mehr "kleine" als "grosse" Werte. Here it is:
x(n+1)=frac ( ( (frac x(n) ) + pi )^8 )
(Als "Seed" auf jeder Hoehenlinie jeweils irgendein Mittel aus den
Ausgangsdaten gewaehlt... geometrisches, arithmetisches, harmonisches,
was halt einfach am schnellsten/besten geht... je nachdem, welche
Zwischenergbnisse sonst noch zur Verfuegung stehen.)
--
Haufen Gruesse, Thomas Fischbacher dexam@another.gun.de
fischbac@informatik.tu-muenchen.de
Microsoft Network is prohibited from redistributing this work in any form, in
whole or in part. License to distribute this post is available to Microsoft
for $499. Posting without permission constitutes an agreement to these terms.
Resistance is futile. You will be assimilated.
The Borg
Re: Reproduzierbarer Zufall
Author: Juergen Weinelt
Date: Wed, 27 Dec 1995 21:12
Date: Wed, 27 Dec 1995 21:12
37 lines
2052 bytes
2052 bytes
Marc 'Nepomuk' Heuler (marc@aargh.incubus.sub.org) wrote:
| Für mein aktuelles Projekt benötige ich eine Funktion, die aus sich wenig
| verändernden Eingangsdaten stark veränderte Ergebnisdaten erzeugt.
Probier' mal einen der Standard-Pseudozufallsgeneratoren aus. Welche
da was taugen, muesste eigentlich in "The Art of Computer Programming"
dokumentiert sein.
Wenn ich mich dunkel erinnere (--> Vorsicht, aus dem Gedaechtnis!),
sieht ein typischer Generator ungefaehr so aus:
rnd = ( rnd + k1 ) * k2
n+1 n
Das Ganze typischerweise modulo 65536, weil das auf die gaengigen
Prozessoren erfreulich billig zu haben ist ;). Fuer die Wahl eines
brauchbaren Generators ist allerdings die Wahl von "k1" und "k2" von
entscheidender Bedeutung! Als Faustregel fuer eigene Versuche solltest
Du mal testweise fuer "k2" eine Zahl zwischen 200 und 300 waehlen, und
fuer "k1" eine Zahl, die in der Naehe von sqrt(k1) liegt. "k1" und
"k2" sollten nicht ausgerechnet Zweierpotenzen sein. :-)
| Wichtig ist aber, daß dies reproduzierbar ist. Die Eingaben müßen auch in
| falscher Reihenfolge und unvollständig gemacht werden können, ohne daß
| einer Eingabe dadurch ein anderes Ergebnis zugeordnet würde.
Nimm die Eingabe als "rnd ", dann hast Du dieses Kriterium erfuellt.
n
| Da ich meiner Funktion einen Wertebereich vorgebe, der auch einigermaßen
| gleichmäßig ausgenutzt werden soll (er wurde mit Bedacht gewählt), scheint
| MD5SUM auch nicht so gut geeignet zu sein.
Wenn Du die Konstanten "k1" und "k2" geschickt waehlst, sollte sich das
problemlos erfuellen lassen.
-- Juergen Weinelt
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads