Seite 3 von 4

Verfasst: 01.10.2006 14:07
von Kaeru Gaman
interessante idee... mir is beim betrachten der vokale ne regelmäßigkeit aufgefallen, die man vielleicht ausnutzen kann.

Code: Alles auswählen

; A = 65  | A +  0
;   +  4
; E = 69  | A +  4
;   +  4
; I = 73  | A +  8
;   +  6
; O = 79  | A + 14
;   +  6
; U = 85  | A + 20
weiter hatte ich noch eine möglichkeit erdacht, andere verteilungen zu erzeugen:

Code: Alles auswählen

(Random(2) / 2)
erzeugt zu 2/3 eine 0 und zu 1/3 eine 1. (integer-cast duch die Random-Funktion)

hab leider keine zeit, die gedanken weiterzuspinnen, ich hab was vor...
aber evtl. is das eine oder andere ja ne anregung für die anderen tüftler. ;)

Verfasst: 01.10.2006 14:58
von AND51
Genau, dann wäre dein vorhaben auch möglich @ STARGATE

Verfasst: 01.10.2006 16:41
von STARGÅTE
Ich habe auch schon gedacht das das eine random(2)*4 ist und das andere random(1)*6

ja aber das problem eine 2-Stufigenzufalls zahl ist : das dann nicht mehr alle Buchstaben die gleiche wahrscheinlichkeit haben

meine Idee war ja

73 als start zu nehmen sodass dann :

-8 -4 0 6 12

kommen kann.

Jetzt müsste der faktor F bei (Random(4)-2)*F sich bei positiven randomzahelen zu 6 werden und sonst 4 sein

Verfasst: 02.10.2006 15:06
von Kaeru Gaman
> das dann nicht mehr alle Buchstaben die gleiche wahrscheinlichkeit haben

deswegen dachte ich ja an eine wahrscheinlichkeitsverschiebung wie oben angedeutet.

Verfasst: 05.10.2006 08:25
von code2nil
Wie wäre es denn mit

Code: Alles auswählen

Chr(32 + Random(25) + 33*Random(1))
?

Verfasst: 05.10.2006 11:43
von NicTheQuick
Das Vokal-Problem ist doch gar nicht so schwer:

Code: Alles auswählen

For a = 1 To 20
  Debug Chr(73 + Random(2) * (6 - Random(1) * 10))
Next
:mrgreen:
Das Herzstück ist eigentlich nur die Klammer: (6 - Random(1) * 10) wird entweder zu 6 oder zu -4


Die Wahrscheinlichkeitsverteilung ist auch gut:

Code: Alles auswählen

Dim Chars.l(255)

For a = 1 To 10000
  Chars(73 + Random(2) * (6 - Random(1) * 10)) + 1
Next

Debug Chars(65)
Debug Chars(69)
Debug Chars(73)
Debug Chars(79)
Debug Chars(85)

Verfasst: 05.10.2006 11:48
von Karl
Wie wär´s, wenn ihr die Buchstabenverteilung innerhalb der deutschen Wörter (ja, Wortanalyse vorausgesetzt) berücksichtigt?

->Wörterbuch besorgen
->Buchstaben zählen
->diskrete Verteilung ermitteln

Gruß Karl

Verfasst: 05.10.2006 11:53
von Kaeru Gaman
@NTQ

hatte den thread schon wieder vergessen...


@Karl

wie wärs, wenn du mal ne lösung zeigst, wie man für irgendetwas eine
wie auch immer geartete diskrete verteilung bei Random hinbekommt...?

würde mich echt mal interessieren. schon ne normalverteilung war recht kompliziert,
ne diskrete verteilung stell ich mir wirklich heftig zu proggen vor.

Verfasst: 05.10.2006 12:00
von Karl
->int(Random(x)) liefert eine Zahl <= x (normalverteilt?)

->x-> Index für ein Array mit einer gespeicherten Verteilung (transformiert)

So als Idee.

Gruß Karl

PS: Was giftest du denn hier so rum? Falscher Fuß? :?

Verfasst: 05.10.2006 12:41
von Kaeru Gaman
@PS
nein, das war da in dem satz nicht drin, is halt ungünstig,
dass betonung nich rüberkommt bei schriftlicher kommunikation.


> int(Random(x)) liefert eine Zahl <= x (normalverteilt?)

nein.
1. Random ist bereits Integer.
2. die Ergebnisse sind einigermaßen parallelverteilt.


> Index für ein Array mit einer gespeicherten Verteilung (transformiert)

öh... ich will ja zufallswerte zurückgeben.
also, wenn ich mit nem verteilungs-array arbeiten wollte, wie soll ich das lösen?
alle parallelverteilt so oft auftreten lassen, bis manche elemte an
ihrem verteilungsmaximum anstoßen, und danach diese eliminieren?
das würde aber zu allem anderen führen, nur nicht zu einer diskreten verteilung...
außerdem wäre ein riesen-array keine wirkliche lösung, es müsste schon auf ner formel basieren.

die lösung, die ich für eine Normalverteilung erarbeitet hatte,
ist auch keine echt sondern eine simulierte.
ich arbeite dabei mit einem sinus, da diese kurve der Gaußkurve ziemlich ähnelt.
aber im grunde ist es nur eine brauchbare imitation.

(edit)
so, hatte es ja garnicht hier in C,T&T gepostet, nur drüben in der Lounge...
http://www.purebasic-lounge.de/viewtopic.php?t=1948