Random letter

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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. ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Genau, dann wäre dein vorhaben auch möglich @ STARGATE
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> das dann nicht mehr alle Buchstaben die gleiche wahrscheinlichkeit haben

deswegen dachte ich ja an eine wahrscheinlichkeitsverschiebung wie oben angedeutet.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
code2nil
Beiträge: 9
Registriert: 17.09.2004 09:39
Wohnort: Nähe K/BN/SU/GM

Beitrag von code2nil »

Wie wäre es denn mit

Code: Alles auswählen

Chr(32 + Random(25) + 33*Random(1))
?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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)
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag 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
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag 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ß? :?
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten