🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#2323
Author: Marc 'Nepomuk' Heuler
Date: Thu, 21 Dec 1995 21:16
27 lines
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
#2376
Author: Stefan Reich
Date: Sat, 23 Dec 1995 15:04
36 lines
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
#2411
Author: Thomas Fischbacher
Date: Wed, 27 Dec 1995 11:36
41 lines
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
#2408
Author: Juergen Weinelt
Date: Wed, 27 Dec 1995 21:12
37 lines
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