Buchstabenkombinationen, zufällige Verteilung

hallo,

  1. ich habe die buchstaben a,b,…h und möchte alle möglichen 4-er kombinationen, z.b.: abcd, efgh, abgh usw… es ist mir klar, dass es insgesamt 70 kombinationen gibt, habe aber keine lust, die „per hand“ zusammenzubasteln! gibt´s da was in excel?

  2. wie kann ich 33 dieser kombinationen gleichmässig in ein 33x4 raster einbauen, die einzelnen buchstaben sollen etwa gleich oft vorkommen -
    4 16x, 4 17x - und mehr oder minder gleichmässig verteilt sein, ich meine damit, am anfang nicht alle „a“-kombinationen usw.

grüße + dank für jede anregung
hajo

nur mal so nebenbei

hallo,

Hi,

  1. ich habe die buchstaben a,b,…h und möchte alle möglichen
    4-er kombinationen, z.b.: abcd, efgh, abgh usw… es ist mir
    klar, dass es insgesamt 70 kombinationen gibt, habe aber keine
    lust, die „per hand“ zusammenzubasteln! gibt´s da was in
    excel?

Wie kommst du auf 70 Kombinationen?
Ich komme auf 1680 (8*7*6*5), wenn jeder Buchstabe nur einmal vorkommen darf. Gilt diese Einschränkung nicht, bekomme ich sogar 4096 (8*8*8*8).
Gruß.Timo

hallo,

  1. ich habe die buchstaben a,b,…h und möchte alle möglichen
    4-er kombinationen, z.b.: abcd, efgh, abgh usw… es ist mir
    klar, dass es insgesamt 70 kombinationen gibt, habe aber keine
    lust, die „per hand“ zusammenzubasteln! gibt´s da was in
    excel?

ja
geht mit for schleifen und ASCII Zeichentabelle.

  1. wie kann ich 33 dieser kombinationen gleichmässig in ein
    33x4 raster einbauen, die einzelnen buchstaben sollen etwa
    gleich oft vorkommen -
    4 16x, 4 17x - und mehr oder minder gleichmässig verteilt
    sein, ich meine damit, am anfang nicht alle „a“-kombinationen
    usw.

Voraussetzung alle Kombinationen sind in einem Array

kombis[1]…kombis[MAXKOMBI]
und ein weiteres Array (1…MAXKOMBI) für den Ziehungszustand.
gezogen[1]…gezogen[MAXKOMBI]

Dann eine Zufallzahl im Bereich von 1 bis MAXKOMBI bilden.
Wenn also gezogen[ZUFALL] gleich 0
dann setze Wert für gezogen[ZUFALL] auf 1
und kombis[ZUFALL] ist die Kombination.

So hast du Zufall und keine doppelten bei der Anzeige.

Ein weiteres Array (1…MAXKOMBI) für is

grüße + dank für jede anregung
hajo

Hi Hajo,

  1. ich habe die buchstaben a,b,…h und möchte alle möglichen
    4-er kombinationen, z.b.: abcd, efgh, abgh usw… es ist mir
    klar, dass es insgesamt 70 kombinationen gibt, habe aber keine
    lust, die „per hand“ zusammenzubasteln! gibt´s da was in
    excel?
Option Explicit
Sub acht()
Dim a As Byte, b As Byte, c As Byte, d As Byte, Wort$, zei As Long
Columns(1).ClearContents
For a = 97 To 104
 For b = 97 To 104
 For c = 97 To 104
 For d = 97 To 104
 Wort$ = Chr(a) & Chr(b) & Chr(c) & Chr(d)
 If pruef(Wort$, a) = True And pruef(Wort$, b) = True And pruef(Wort$, c) = True And pruef(Wort$, d) = True Then
 zei = zei + 1
 Cells(zei, 1) = Wort$
 End If
 Next d
 Next c
 Next b
Next a
End Sub

Function pruef(Wort As String, Such As Byte) As Boolean
If InStr(InStr(Wort, Chr(Such)) + 1, Wort, Chr(Such)) = 0 Then pruef = True
End Function
  1. wie kann ich 33 dieser kombinationen gleichmässig in ein
    33x4 raster einbauen, die einzelnen buchstaben sollen etwa
    gleich oft vorkommen -
    4 16x, 4 17x - und mehr oder minder gleichmässig verteilt
    sein, ich meine damit, am anfang nicht alle „a“-kombinationen
    usw.

Aus den 1680 Möglichkeiten sollen also 33 zufällig ausgewählt werden wobei das a 4mal vorkommt, das b 5mal, das c 4mal das d 5mal usw.?

Gruß
Reinhard

Hi Hajo,
sofern mein Code stimmt ist es nicht lösbar 33mal 4er Gruppen aus den 1680 Möglichkeiten zu bilden. Da ich die Zusammenstellung zufällig erzeugen lasse kommen immer andere Ergebnisse, aber alle sind ähnlich.
Mal ein Beispiel, wo 32 Kombinationen erzeugt wurden, das Schwankt immer um die paarunddreißig, aber 33 wird nie erreicht und alle 1680 Möglichkiten wurden überprüft. (Code steht nachstehend)

Tabellenblattname: Tabelle1
 C D E F 
 1 ghde a 17 17 
 2 bgda b 16 17 
 3 hbce c 17 17 
 4 cfge d 16 16 
 5 acde e 15 16 
 6 bgfh f 15 17 
 7 cgah g 16 16 
 8 cahg h 16 16 
 9 dhea Ist maximal 
10 gdha 
11 agfe 
12 bhgf 
13 cbfd 
14 dfgc 
15 hcbd 
16 gdef 
17 dach 
18 dcea 
19 adef 
20 bdce 
21 ebhd 
22 fdga 
23 dhbg 
24 abhc 
25 hgac 
26 gcbf 
27 hcef 
28 hbac 
29 befc 
30 bgfa 
31 aebf 
32 ebfa 

Wie man aus F1:F8 herauslesen kann dürfen a,b,c,f 17mal und d,e,g,h 16mal benutz werden. In E1:E8 steht wie oft sie schon benutzt wurden.
Die noch fehlende 33te Kombination müßte aus b,e, und 2mal f bestehen, aber das ist ja nicht erlaubt Buchstaben doppelt zu benutzen. Ergo, Aufgabe nicht lösbar.
Gruß
Reinhard

Option Explicit
Sub acht()
Dim a As Byte, b As Byte, c As Byte, d As Byte, Wort$, zei As Long, z%
Dim Wort16$, Wort17$, anz(110, 1) As Byte, Summe%, n As Integer, okay As Boolean
Dim p1, p2, nn
Application.ScreenUpdating = False
Range("A1:C1680").ClearContents
For a = 97 To 104
 For b = 97 To 104
 For c = 97 To 104
 For d = 97 To 104
 Wort$ = Chr(a) & Chr(b) & Chr(c) & Chr(d)
 If pruef(Wort$, a) = True And pruef(Wort$, b) = True And pruef(Wort$, c) = True And pruef(Wort$, d) = True Then
 zei = zei + 1
 Cells(zei, 1) = Wort$
 End If
 Next d
 Next c
 Next b
Next a
zei = 0
While 1
 zei = zei + 1
 If zei = 1681 Then GoTo ende
weiter:
 Randomize
 z = Int(Rnd() \* 1680) + 1
 If Cells(z, 2) "" Then GoTo weiter
 Cells(z, 2) = zei
Wend
ende:
Range("A1:B1680").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, \_
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True
Columns(2).ClearContents
Wort16$ = [A1]
Wort17$ = "abcdefgh"
For zei = 1 To 4
 Wort17$ = Replace(Wort17$, Mid(Wort16$, zei, 1), "")
Next zei
For zei = 1 To 8
 If zei