Nein, ich meine es so:
Gut, Array passt nicht wirklich so richtig, besser ist wohl "Bereich". Also denke dir eine Stichprobe von sagen wir 500.
Je nachdem wie die Buchstaben verteilt sind (z. B. 30x N, 20x E etc.) legst du jetzt (gedanklich) einen Bereich an, z. B. für A:-> index von 0 bis 5 etc.
Dann die Zufallszahl bestimmen und prüfen, innerhalb welches Bereiches sie sich befindet, das wäre dann der Buchstabe unter Berücksichtigung der Verteilung. Geht deswegen, weil Random() gleichverteilt ist und demnach die Anordnung der Buchstaben keine Rolle spielt.
Gruß Karl
Random letter
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Code: Alles auswählen
Procedure InitRandom(Vert.l(1))
Shared _Sum.l
For z = 0 To PeekL(@Vert() - 8) - 1
_Sum + Vert(z)
Next
EndProcedure
Procedure.l VertRandom(Vert.l(1))
Shared _Sum
Protected Rand.l, Index.l
Rand = Random(_Sum - 1) + 1
Index = 0
If Rand
While Rand > 0
Rand - Vert(Index)
Index + 1
Wend
Index - 1
Else
Index = 0
EndIf
ProcedureReturn Index
EndProcedure
DataSection
verteilung:
Data.l 2, 5, 10, 4, 1
EndDataSection
Dim Vert.l(4)
CopyMemory(?verteilung, @Vert(), 5 * SizeOf(Long))
InitRandom(Vert())
Dim res.l(4)
For z = 0 To 1000
a = VertRandom(Vert())
res(a) + 1
Next
Debug res(0)
Debug res(1)
Debug res(2)
Debug res(3)
Debug res(4)
res(VertRandom(Vert())) + 1
schreibt

Zuletzt geändert von remi_meier am 05.10.2006 14:15, insgesamt 2-mal geändert.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@Karl
ah, jetzt verstehe ich, cool.
es wäre zwar immer noch eine tabelle, die man mitliefern müsste,
aber dafür ein verfahren, das auf jede beliebige diskrete verteilung
anwendbar ist, und keine formel, die immer wieder neu gebacken
werden müsste.
ah, jetzt verstehe ich, cool.

es wäre zwar immer noch eine tabelle, die man mitliefern müsste,
aber dafür ein verfahren, das auf jede beliebige diskrete verteilung
anwendbar ist, und keine formel, die immer wieder neu gebacken
werden müsste.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.