Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

bedingter Zahlengenerator

Forumthread: bedingter Zahlengenerator

bedingter Zahlengenerator
21.11.2024 14:28:03
renatoaugusto
Hallo allerseits,

Ich möchte von Excel gerne Zufallszahlen unter folgenden Bedingungen generieren lassen:

1.
Bereich:
nur Zahlen aus bspw. 1 bis 100

2.
Zufallswerte
bspw. 20 zufällige Werte aus o.g. Bereich

3.
vorgegebene Kombinationen:
nur Kombinationen (bspw. 10), mit bspw. 6 Werten aus den obigen 20 vorgegebenen Werten

Ich hoffe, das ist so ausreichend deutlich erklärt.
Kann jemand helfen?
Danke im voraus.
VG
Kai
Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bedingter Zahlengenerator
21.11.2024 14:47:33
Yal
Hallo Kai,

=ZUFALLSBEREICH(1;100)
nach unten auf 20 Zellen ziehen.

VG
Yal
Bei den bisherigen Lösungen …
21.11.2024 15:57:53
RPP63
… sind Dubletten möglich!
20 Zufallszahlen ohne Duplikate aus 1 bis 100 ermittele ich so:
=SORTIEREN(ÜBERNEHMEN(SORTIERENNACH(SEQUENZ(100);ZUFALLSMATRIX(100));20))

Nummer 3 habe ich nicht verstanden.

Gruß Ralf
Anzeige
AW: Bei den bisherigen Lösungen …
22.11.2024 15:10:42
renatoaugusto
Hallo Ralf,

super, vielen Dank, du hast es vorausgesehen, Dubletten sind nicht erwünscht, hatte ich vergessen zu erwähnen.

Beim dritten Punkt hab ich mich etwas schwer getan es verständlich zu formulieren:

Es sollen zehn zufällige Kombinationen mit je 6 Werten aus den zuvor generierten 20 Zahlen erstellt werden, soll heißen die übrigen 80 Werte aus 1 bis 100 sollen nicht mehr berücksichtigt werden.
Ergebnis würde dann bspw. so aussehen:

20 zufällige Werte zwischen 1 und 100:
3, 9, 11, 15, 19, 24, 33, 39, 44, 45, 47, 48, 60, 61, 77, 78, 79, 80, 99, 100

10 Kombinationen mit je 6 Werten aus o.g. 20:
1.: 11, 78, 79, 80, 99, 100
2.: 19, 45, 60, 79, 80, 100
3.: 3, 33, 48, 77, 99, 100 etc.
4.
5.
6.
7.
8.
9.
10.

Variable Eingabewerte sollen sein:
1.
Bereich: hier im Beispiel 1-100

2.
#Zufallszahlen: hier im Beispiel 20

3.
#Kombinationen: hier im Beispiel 10

4.
#Werte/Kombination: hier im Beispiel 6

Für euch bestimmt ein Klacks, ich bekomme es leider nicht hin...
Danke für die bisherige Mühe

VG
Kai
Anzeige
AW: Bei den bisherigen Lösungen …
22.11.2024 15:19:59
renatoaugusto
Achja, wieder vergessen:

auch wieder keine Dubletten, i.e. keine identischen 6er-Kombinationen
VG
AW: Bei den bisherigen Lösungen …
22.11.2024 15:27:39
renatoaugusto
Können zuvor verfasste Beiträge eigentlich später noch mal geändert werden? Sehe keine Option...
AW: Bei den bisherigen Lösungen …
22.11.2024 16:13:17
renatoaugusto
Anbei noch als Beispiel, wie das Ergebnis in etwa aussehen sollte.

https://www.herber.de/bbs/user/173774.xlsx

Gruß
Kai
Anzeige
AW: Bei den bisherigen Lösungen …
22.11.2024 16:49:07
RPP63
Moin mal wieder!
Du brauchst also i Ziehungen mit k Werten, die sich aus dem Zahlenraum l (Anfang) und m (Ende) ergeben, der aus n Zufallszahlen besteht.
Ich bin mir recht sicher, dass man diese 5 Variablen in einer einzigen Formelzelle abbilden kann, die dann fröhlich spillt.
Subsumiert ist das ja nichts anderes als die Auflistung von x Ziehungen im Lotto.
Ja, geht sicherlich (wenngleich es kein "Klacks" ist!), die Umsetzung interessiert mich auch …
… ich weiß nicht, ob ich heute noch Lust dazu habe, werde aber am Wochenende eine Lösung vorstellen.
(Es sei denn, jemand kommt mir zuvor ;))

Gruß Ralf
Anzeige
AW: Bei den bisherigen Lösungen …
22.11.2024 17:21:33
renatoaugusto
Hallo Ralf,

du hast es in einem Satz auf den Punkt gebracht und es zeigt sich, wer in Mathe aufgepasst hat...
Alles in einer Zelle wäre faszinierend und die größere Herausforderung, die Zwei-Schrittlösung vom Ergebnis her sicher nicht schlechter.
Danke im voraus.

Grüße
Anzeige
Annäherung
23.11.2024 08:01:42
RPP63
Eine Ein-Zellen-Lösung habe ich nicht zum Laufen gebracht.
Außerdem musste ich den Zahlenraum (die 12 Zufallszahlen) durch Kopieren und Einfügen als Wert fixieren.
Vorab der Link zur Übungsdatei:
https://www.herber.de/bbs/user/173782.xlsx
Der Reihe nach:
Die Vorgabe
 AB
1  
2  
3Bereich Anfang:5
4Bereich Ende:45
5  
6#Werte aus Bereich:12
7  
8#Ziehungen10
9  
10wieviel aus Bereich4

Hier also 4 aus 12 (12 Zufallszahlen aus dem Zahlenbereich von 5 bis 45) mit insgesamt 10 Ziehungen.
Die Zufallszahlen ermittele ich so:
 DEFGHIJKLMNOP
171011152329333536383943 

ZelleFormel
D1=LET(Anf;B$3;End;B$4;
Bereich;SEQUENZ
(;End-Anf+1;Anf);
unsort;SORTIERENNACH
(Bereich;ZUFALLSMATRIX(;SPALTEN(Bereich)));
n_Werte_aus_Bereich;ÜBERNEHMEN
(unsort;;B$6);
SORTIEREN
(n_Werte_aus_Bereich;;;1))

Damit die Zufallszahlen fixiert sind, muss ich sie in D2 kopieren (mittels =D1#), Zeile 2 kopieren und als Wert einfügen.
4 aus 12 erfolgt in D3 mittels
 DEFGHIJKL
330353845     

ZelleFormel
D3=WENN(ZEILE(X1)>B$8;"";LET(Bereich;FILTER($2:$2;$2:$2>"");
SORTIEREN
(
ÜBERNEHMEN
(
SORTIERENNACH
(Bereich;ZUFALLSMATRIX(;B$6));;B$10);;;1)))

D3 kann jetzt beliebig nach unten gezogen werden.
 ABCDEFGHIJKLMNOP
1   6810172223272930353743 
2   81427283033353638434445 
3Bereich Anfang:5 35363843         
4Bereich Ende:45 14333844         
5   27354345         
6#Werte aus Bereich:12 35364345         
7   8142743         
8#Ziehungen10 28333638         
9   30333643         
10wieviel aus Bereich4 27303843         
11   30434445         
12   28364445         
13                
14                

ZelleFormel
D1=LET(Anf;B$3;End;B$4;
Bereich;SEQUENZ
(;End-Anf+1;Anf);
unsort;SORTIERENNACH
(Bereich;ZUFALLSMATRIX(;SPALTEN(Bereich)));
n_Werte_aus_Bereich;ÜBERNEHMEN
(unsort;;B$6);
SORTIEREN
(n_Werte_aus_Bereich;;;1))
D3=WENN(ZEILE(X1)>B$8;"";LET(Bereich;FILTER($2:$2;$2:$2>"");
SORTIEREN
(
ÜBERNEHMEN
(
SORTIERENNACH
(Bereich;ZUFALLSMATRIX(;B$6));;B$10);;;1)))
Anzeige
Finale
23.11.2024 08:38:32
RPP63
Final jetzt ohne das bekloppte Kopieren und als Wert einfügen!
Wenn die Datei formelmäßig vorbereitet ist, geht es auch "simpel" so:
 ABCDEFGHIJKLMNOPQR
1   61012131415163036404243   
2                  
3Bereich Anfang:5 12131540           
4Bereich Ende:49 6154042           
5   30364043           
6#Werte aus Bereich:12 6303642           
7   10121542           
8#Ziehungen7 10131540           
9   14364043           
10wieviel aus Bereich4                
11                  

ZelleFormel
D1=LET(Anf;B$3;End;B$4;
Bereich;SEQUENZ
(;End-Anf+1;Anf);
unsort;SORTIERENNACH
(Bereich;ZUFALLSMATRIX(;SPALTEN(Bereich)));
n_Werte_aus_Bereich;ÜBERNEHMEN
(unsort;;B$6);
SORTIEREN
(n_Werte_aus_Bereich;;;1))
D3=WENN(ZEILE(W1)>B$8;"";
SORTIEREN
(
ÜBERNEHMEN
(
SORTIERENNACH
(D$1#;ZUFALLSMATRIX(;B$6));;B$10);;;1))


Auch hier wieder die überarbeitete Testdatei:
https://www.herber.de/bbs/user/173783.xlsx
Anzeige
AW: Finale
23.11.2024 12:29:19
renatoaugusto
Hallo Ralf,

das Ergebnis sieht super aus, die Formeln auch, aber das sind böhmische Dörfer für mich.
Bei mir hört es nach dem S-Verweis schon auf, diese verschachtelten Formeln sind beeindruckend.
Ganz lieben Dank für deine Hilfe. Ich versuche jetzt noch einzufügen, wie oft jede Zahl in den Ziehungen vorkommt.
Hast du einen Tipp für mich, welche Formel das wäre, gibt es so etwas wie "Anzahl"?

Viele Grüße
Kai
Anzeige
böhmische Dörfer ;)
23.11.2024 13:53:10
RPP63
»Ich versuche jetzt noch einzufügen, wie oft jede Zahl in den Ziehungen vorkommt.«
und
»aber das sind böhmische Dörfer für mich«
Nicht falsch verstehen:
Für jemanden mit Selbsteinschätzung kaum Excel-Kenntnisse werden diese Formeln auch in Jahren noch unverständlich sein.
(ähnlich wie für einen Grundschüler, der gerade das kleine 1*1 lernt und plötzlich Stochastik vorgesetzt bekommt) ;)
Zu "wie oft jede Zahl":
 ABAC
3ZahlAnz
422
534
655
783
8144
9156
10165
11176
12184
13215
14231
15385
16394
17404
18424
19437
20493
21 624
22  

ZelleFormel
AB3=LET(Header;{"Zahl"."Anz"};
Zahlen;SORTIEREN
(EINDEUTIG(ZUSPALTE(D3:Z31;1)));
AnzZahl;NACHZEILE
(Zahlen;LAMBDA(x;ZÄHLENWENN(D3:AA31;x)));
VSTAPELN
(Header;HSTAPELN(Zahlen;AnzZahl)))

Das wirst (besser kannst) Du nicht nachvollziehen, nimm es einfach so, dass ich viel Spaß an diesem Thread hatte.
Anzeige
AW: böhmische Dörfer ;)
23.11.2024 13:58:10
RPP63
Die 624 aus obigem Beispiel sind die Anzahl der Leerzellen.
Will man die nicht haben, dann so:
=LET(Header;{"Zahl"."Anz"};

Zahlen;SORTIEREN(EINDEUTIG(ZUSPALTE(D3:Z31;1)));
AnzZahl;NACHZEILE(Zahlen;LAMBDA(x;ZÄHLENWENN(D3:AA31;x)));
WEGLASSEN(VSTAPELN(Header;HSTAPELN(Zahlen;AnzZahl));-1))
Anzeige
AW: böhmische Dörfer ;)
24.11.2024 11:14:41
renatoaugusto
Hallo Ralf,

du sagst es, da mache ich mir keine Illusionen. Dafür fehlt sowohl die Muße als auch das Talent.
Freut mich aber, dass ich einem "alten Hasen" eine passende Aufgabe stellen konnte.

Lässt sich der "wie-oft-gezogen-Wert" auch direkt horizontal in d2-o2 integrieren?

Gruß
Kai
Anzeige
MTRANS()
24.11.2024 11:38:41
RPP63
Dafür gibt es (als einfachste Lösung) MTRANS()
=LET(
Header; {"Zahl". "Anz"};
Zahlen; SORTIEREN(EINDEUTIG(ZUSPALTE(D3:Z31; 1)));
AnzZahl; NACHZEILE(Zahlen; LAMBDA(x; ZÄHLENWENN(D3:AA31; x)));
MTRANS(WEGLASSEN(VSTAPELN(Header; HSTAPELN(Zahlen; AnzZahl)); -1))
)
Ich könnte die Matrix auch gleich anders aufbauen, aber dazu fehlt selbst mir die Muße. ;)

Gruß Ralf
Anzeige
falsch verstanden
24.11.2024 11:39:51
RPP63
Habe es falsch verstanden!
Einen Moment!
aber jetzt!
24.11.2024 11:41:55
RPP63
In D2:
=NACHSPALTE(D1#;LAMBDA(x;ZÄHLENWENN(D3:Z31;x)))
AW: aber jetzt!
24.11.2024 12:34:09
renatoaugusto
Ich wünschte, ich könnte solche Formeln auch einfach so aus dem Ärmel schütteln. Besten Dank.

Durch diesen statistischen Wert ist mir aufgefallen, dass noch kleine Verfeinerungen möglich sind.
Vielleicht hast du noch Lust auf neue Herausforderungen...

Manche Werte werden oft, andere gar nicht gezogen:
Vielleicht könnte man vorgeben, dass jeder Wert mindestens ein mal gezogen werden muss, oder, und dass könnte der Endgegner sein,
dass jeder Wert z.b. mindestens 3, und höchstens 6 mal gezogen werden darf, sodass in den Ziehungen alle 20 Werte ähnlich gut repräsentiert sind.

Außerdem versuche ich gleich eine Version zu erstellen, welche die Ziehungen aus vorgegebenen statt aus den zufälligen Werten erstellt.

Gruß
Kai
Anzeige
AW: Bei den bisherigen Lösungen …
22.11.2024 17:47:23
Yal
Moin,

wenn man eine Liste von 100 Werten und den Rang dazu holt, kann man vielleicht die Bereich 1 bis 5, 10 bis 15, usw. zusammen bringen.

in A1
=ZUFALLSMATRIX(100;1;1;1000000;FALSCH)

in B1
=RANG.GLEICH(A1#;A1#)

in C1
=VSTAPELN(B5:B10;B15:B20)

oder mit Indirekt
=VSTAPELN(indirekt("B"&D1&":B"&(D1+D2);indirekt("B"&D3&":B"& (D3+D4))

Wobei ausserst fragwürdig ist, warum die Ergebnis 5-10 und 15-20 besser/sinnvoller als einfach die Ergebnisse 1-12 (?)

Rang.Gleich scheint sich nicht einfach in einem "LET" einfangen zu lassen, was die Zusammenfassung erschwert.

Sollte komplexe Gebilde könnte man mit VBA abdecken.

VG
Yal
Anzeige
AW: Bei den bisherigen Lösungen …
22.11.2024 18:07:03
renatoaugusto
Hallo Yal,

Danke für deinen Input.
Leider sind meine Kenntnisse derart rudimentär, dass ich deinen Ausführungen kaum folgen kann, merke aber, dass es doch nicht so trivial zu sein scheint, wie ich dachte.

VG
In der angegebenen Excelversion...
21.11.2024 15:28:44
{Boris}
Hi Yal,

...kann man die auch spillen lassen:

=ZUFALLSMATRIX(20;1;1;100;1)

VG, Boris
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige