Liste nach Zufallsprinzip
Moin moin,
ich möchte eine Liste nach dem Zufallsprinzip erstellen, und zwar aus den Zahlen 500 bis 999 soll er mir 10 Zahlen sagen können. Desweitern zu jeder Zahl einen Zeitraum von 14 Tagen pro Quartal zusammenhängend, aber auch wieder über Zufallsprinzip errechnet. Hoffe ihr habt wieder mal eine zündende Idee für mich. Ich bedanke mich schon im voraus bei euch.
Icemanhro
ich möchte eine Liste nach dem Zufallsprinzip erstellen, und zwar aus den Zahlen 500 bis 999 soll er mir 10 Zahlen sagen können. Desweitern zu jeder Zahl einen Zeitraum von 14 Tagen pro Quartal zusammenhängend, aber auch wieder über Zufallsprinzip errechnet. Hoffe ihr habt wieder mal eine zündende Idee für mich. Ich bedanke mich schon im voraus bei euch.
Icemanhro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21951
Url: https://administrator.de/contentid/21951
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
11 Kommentare
Neuester Kommentar
Moin IceMan, Rostocker,
sind ja zwei Teilfragen, die Du hast, und ich verstehe nur die erste...
Die erste Frage... eine Zufallszahl zwischen 1 und 500... dafür bieten ziemlich alle Programmier-, Makro- und Skriptsprachen eine Funktion, die meistens Random(), RND() oder ähnlich heißt und die
- entweder einen Zufallswert zwischen 0 und 1 liefert,
- oder einen Zufallswert zwischen zwei Parametern (Untergrenze; Obergrenze) liefert
- oder einen Zufallswert zwischen zwei Zahlen (eigene fest verdrahte Untergrenze; Obergrenze) liefert.
Beispiel Excel: Da ist die Funktion <s>albernerweise</s> eingedeutscht worden und heißt ZUFALLSZAHL().
Um dort eine Zufallszahl zwischen 1 und 500 zu berechnen/zu erhalten, müsstest Du sagen:
=GANZZAHL(ZUFALLSZAHL() *500)
liefert dann 380 oder 37 oder irgendwas Passendes.
Selbst im Batch, am CMD-Prompt gibt es eine %ramdom%-Systemvariable mit einem Zufallswert zwischen 1 und 32767.
Kannst du testen mit "echo %random%" am CMD-Prompt.
Um von %random% auf einen Wert zwischen 1 und 500 zu kommen, kannst Du die Modulo-Funktion nutzen:
Set /a Zufallszahl=%random%%500
(lies: Setze Zufallszahl gleich (Variable Random) Modulo 500, wobei das zweite "%"-Zeichen der Modulo-Operator ist. Siehe Batch Tut IV oder, sehr schön erklärt von dragonL in Gibt es keine arrays in Batch ? anderre möglichkeit ?.
Soweit zu Teil 1.
~~~~~~~~
Teil 2: ?????????????????????????
Wie ist der Zeitraum von 14 Tagen zusammenhängend gemeint?
An beliebigen Wochentagen beginnend?
Immer zwei volle Kalenderwochen?
Was meinst Du mit "je Quartal"? 2 Wochen für Q1, ...Q4?
Bastelst Du per Zufallsgenerator einen "gerechten Schichtplan"?
~~~~~~~
Und: Was passiert mit dem Zwischenergebnis? Das muss doch auch irgendwohin geschrieben werden ODER übergeben werden?
Bewegst Du Dich in einem Excel-Sheet oder wo sind wir grade?
Bitte um mehr Infos.
Grüße Biber
sind ja zwei Teilfragen, die Du hast, und ich verstehe nur die erste...
Die erste Frage... eine Zufallszahl zwischen 1 und 500... dafür bieten ziemlich alle Programmier-, Makro- und Skriptsprachen eine Funktion, die meistens Random(), RND() oder ähnlich heißt und die
- entweder einen Zufallswert zwischen 0 und 1 liefert,
- oder einen Zufallswert zwischen zwei Parametern (Untergrenze; Obergrenze) liefert
- oder einen Zufallswert zwischen zwei Zahlen (eigene fest verdrahte Untergrenze; Obergrenze) liefert.
Beispiel Excel: Da ist die Funktion <s>albernerweise</s> eingedeutscht worden und heißt ZUFALLSZAHL().
Um dort eine Zufallszahl zwischen 1 und 500 zu berechnen/zu erhalten, müsstest Du sagen:
=GANZZAHL(ZUFALLSZAHL() *500)
liefert dann 380 oder 37 oder irgendwas Passendes.
Selbst im Batch, am CMD-Prompt gibt es eine %ramdom%-Systemvariable mit einem Zufallswert zwischen 1 und 32767.
Kannst du testen mit "echo %random%" am CMD-Prompt.
Um von %random% auf einen Wert zwischen 1 und 500 zu kommen, kannst Du die Modulo-Funktion nutzen:
Set /a Zufallszahl=%random%%500
(lies: Setze Zufallszahl gleich (Variable Random) Modulo 500, wobei das zweite "%"-Zeichen der Modulo-Operator ist. Siehe Batch Tut IV oder, sehr schön erklärt von dragonL in Gibt es keine arrays in Batch ? anderre möglichkeit ?.
Soweit zu Teil 1.
~~~~~~~~
Teil 2: ?????????????????????????
Wie ist der Zeitraum von 14 Tagen zusammenhängend gemeint?
An beliebigen Wochentagen beginnend?
Immer zwei volle Kalenderwochen?
Was meinst Du mit "je Quartal"? 2 Wochen für Q1, ...Q4?
Bastelst Du per Zufallsgenerator einen "gerechten Schichtplan"?
~~~~~~~
Und: Was passiert mit dem Zwischenergebnis? Das muss doch auch irgendwohin geschrieben werden ODER übergeben werden?
Bewegst Du Dich in einem Excel-Sheet oder wo sind wir grade?
Bitte um mehr Infos.
Grüße Biber
Moin, IceManHRO,
ganz versteh ich die Problematik nicht...
Wenn ich mich 3 Minuten an Excel setze und eine Tabelle zusammenschrote mit 5 Spalten:
- Spalte Endnr (für eine End-TelNr zwischen 500 und 999)
- Spalte Q1-Anfang für den Starttermin in Quartal 1
- Spalte Q1-Ende für den Endetermin in Quartal 1
- Spalte Q2-Anfang für den Starttermin in Quartal 2
- Spalte Q2-Ende für den Endetermin in Quartal 2
(...macht 40 Sekunden...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Endnr" die Formel
=GANZZAHL(ZUFALLSZAHL() *500)+499
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...Stoppuhr bei 1:25...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q1-Anfang" die Formel
=MIN(DATUM(2005;1;1)+GANZZAHL(ZUFALLSZAHL() *90);DATUM(2005;3;31)-14)
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...Stoppuhr bei 1:57...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q1-Ende" die Formel
={links benachbartes Feld "Q1-Anfang"}+14
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...Stoppuhr bei 2:22...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q2-Anfang" die Formel
=MIN(DATUM(2005;4;1)+GANZZAHL(ZUFALLSZAHL() *90);DATUM(2005;6;30)-14)
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...nochmal eine knappe halbe Minute...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q2-Ende" die Formel
={links benachbartes Feld "Q2-Anfang"}+14
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...drei Minuten rum, von daher schenk ich mir Qaurtal3 und 4...)
...dann habe ich schon folgendes Gerüst:
Endnr;Q1-Anfang;Q2-Ende;Q2;Q2-Ende;
539;09.01.2005;23.01.2005;16.06.2005;30.06.2005;
977;17.01.2005;31.01.2005;09.06.2005;23.06.2005;
736;03.02.2005;17.02.2005;29.05.2005;12.06.2005;
753;16.01.2005;30.01.2005;11.04.2005;25.04.2005;
686;11.01.2005;25.01.2005;24.05.2005;07.06.2005;
895;28.02.2005;14.03.2005;06.05.2005;20.05.2005;
921;12.02.2005;26.02.2005;26.04.2005;10.05.2005;
607;23.02.2005;09.03.2005;29.04.2005;13.05.2005;
796;24.01.2005;07.02.2005;30.04.2005;14.05.2005;
872;05.01.2005;19.01.2005;19.04.2005;03.05.2005
...und wenn Du das noch ein bisschen bunt machst, kannst Du es Deinem Chefchen doch morgen so unter den Tannenbaum legen, oder?
HTH Biber
ganz versteh ich die Problematik nicht...
Wenn ich mich 3 Minuten an Excel setze und eine Tabelle zusammenschrote mit 5 Spalten:
- Spalte Endnr (für eine End-TelNr zwischen 500 und 999)
- Spalte Q1-Anfang für den Starttermin in Quartal 1
- Spalte Q1-Ende für den Endetermin in Quartal 1
- Spalte Q2-Anfang für den Starttermin in Quartal 2
- Spalte Q2-Ende für den Endetermin in Quartal 2
(...macht 40 Sekunden...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Endnr" die Formel
=GANZZAHL(ZUFALLSZAHL() *500)+499
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...Stoppuhr bei 1:25...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q1-Anfang" die Formel
=MIN(DATUM(2005;1;1)+GANZZAHL(ZUFALLSZAHL() *90);DATUM(2005;3;31)-14)
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...Stoppuhr bei 1:57...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q1-Ende" die Formel
={links benachbartes Feld "Q1-Anfang"}+14
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...Stoppuhr bei 2:22...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q2-Anfang" die Formel
=MIN(DATUM(2005;4;1)+GANZZAHL(ZUFALLSZAHL() *90);DATUM(2005;6;30)-14)
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...nochmal eine knappe halbe Minute...)
...in das erste Feld unterhalb der Spaltenbeschriftung "Q2-Ende" die Formel
={links benachbartes Feld "Q2-Anfang"}+14
...eingebe, markiere, in die 9 Felder darunter kopiere...
( ...drei Minuten rum, von daher schenk ich mir Qaurtal3 und 4...)
...dann habe ich schon folgendes Gerüst:
Endnr;Q1-Anfang;Q2-Ende;Q2;Q2-Ende;
539;09.01.2005;23.01.2005;16.06.2005;30.06.2005;
977;17.01.2005;31.01.2005;09.06.2005;23.06.2005;
736;03.02.2005;17.02.2005;29.05.2005;12.06.2005;
753;16.01.2005;30.01.2005;11.04.2005;25.04.2005;
686;11.01.2005;25.01.2005;24.05.2005;07.06.2005;
895;28.02.2005;14.03.2005;06.05.2005;20.05.2005;
921;12.02.2005;26.02.2005;26.04.2005;10.05.2005;
607;23.02.2005;09.03.2005;29.04.2005;13.05.2005;
796;24.01.2005;07.02.2005;30.04.2005;14.05.2005;
872;05.01.2005;19.01.2005;19.04.2005;03.05.2005
...und wenn Du das noch ein bisschen bunt machst, kannst Du es Deinem Chefchen doch morgen so unter den Tannenbaum legen, oder?
HTH Biber
Öööhm, Thomas,
wenn er diese Excel-Tabelle einfach nur -statt zu öffnen- drucken lässt, fällt jedes Mal eine andere Zufallsliste raus, wenn ich keinen Denkfehler mache...
Alternativ kannst Du in dieses Excel-Sheet einen "Go"-Button reinsetzen.
Oder in ein beliebiges freies Feld "42" eingeben. Auch das führt zur Neu-Berechnung.
Wenn es noch schlichter sein soll, dann kannst Du den oben skizzierten Algorithmus in *.vbs oder *.js nachbilden.
Von Batch würde ich abraten, da keinerlei Datums(berechnungs)funktionen angeboten werden.
Grüße Biber
wenn er diese Excel-Tabelle einfach nur -statt zu öffnen- drucken lässt, fällt jedes Mal eine andere Zufallsliste raus, wenn ich keinen Denkfehler mache...
Alternativ kannst Du in dieses Excel-Sheet einen "Go"-Button reinsetzen.
Oder in ein beliebiges freies Feld "42" eingeben. Auch das führt zur Neu-Berechnung.
Wenn es noch schlichter sein soll, dann kannst Du den oben skizzierten Algorithmus in *.vbs oder *.js nachbilden.
Von Batch würde ich abraten, da keinerlei Datums(berechnungs)funktionen angeboten werden.
Grüße Biber
Nachtrag:
Als Batch (oder Shellskript) wäre es natürlich auch machbar über den Umweg einer einmalig erzeugten Liste mit "Datumszeiträumen" in der Form:
01.01.2005-14.01.2005
02.01.2005-15.01.2005
03.01.2005-16.01.2005
usw. usw.
..aus der Du mit der %random%-Funktionalität Deine Zufalls-Zeilen rausholst.
Aber so richtig Charme strahlt diese Behelfslösung nicht aus.
Wenn Du lieber so einen Weg gehen willst, können wir die 5 Zeilen für Batch auch schnell gemeinsam zusammenschroten.
Bei Shellskripten lese ich dann aber tendienziell eher die anderen geposteten Lösungen mit.
Gruß Biber
Als Batch (oder Shellskript) wäre es natürlich auch machbar über den Umweg einer einmalig erzeugten Liste mit "Datumszeiträumen" in der Form:
01.01.2005-14.01.2005
02.01.2005-15.01.2005
03.01.2005-16.01.2005
usw. usw.
..aus der Du mit der %random%-Funktionalität Deine Zufalls-Zeilen rausholst.
Aber so richtig Charme strahlt diese Behelfslösung nicht aus.
Wenn Du lieber so einen Weg gehen willst, können wir die 5 Zeilen für Batch auch schnell gemeinsam zusammenschroten.
Bei Shellskripten lese ich dann aber tendienziell eher die anderen geposteten Lösungen mit.
Gruß Biber
Hallo IceManHRO,
weil Weihachten ist, hab ich noch mal ein bissi Zeit zum Rumbätcheln gehabt..
Ich habe mal auf folgendem Weg einen Mini-Batch zusammengeschreddert:
a) in Excel mal drei Formel-Spalten gefüllt, um "alle Tage ab 1.1.2006" zu berechnen.
Also eine "Nebenrechnungs-Spalte" mit dem Feld-Startwert "1.1.2006", in alle Felder darunter einfach die Formel "={Feld-darüber} plus 1"
auf diese Spalte bezugnehmend kann ich mit zwei kleinen Formeln schnell einen 14-Tage-Zeitraum "anzeigen lassen" und in eine weitere Spalte reinschreiben, in welchem Quartal ("Q1...Q4") dieser 14-Tages-Zeitraum liegt.
Sieht dann als Copy & Paste-Text (oder *.csv-Datei) so aus:
snipp Hilfsdatei 14days.txt
Q1; 01.01.06-14.01.06
Q1; 02.01.06-15.01.06
Q1; 03.01.06-16.01.06
Q1; 04.01.06-17.01.06
Q..........(usw. usw)
...
Q4; 14.12.06-27.12.06
Q4; 15.12.06-28.12.06
Q4; 16.12.06-29.12.06
Q4; 17.12.06-30.12.06
Q4; 18.12.06-31.12.06
snapp Hilfsdatei 14days.txt
b) So, nach dieser lästigen Vorarbeit (geht bestimmt irgendwie auch einfacher, aber ich bin Weihnachten immer so träge...*gg) kann ich endlich einen kleinen Kasper-Batch drüberjagen, der mir in anmutig verschlungenen FOR..IN..DO..-Anweisungen Für 10 Zufalls-Telefonnummer zwischen -500 und -999 für 4 Quartale jeweils einen 14-Tages-Zeitraum ausgibt.
Der Batch-Schnipsel:
Der Output:
$cmd$ d:\temp\icemanHRO\RandomWeeks.bat
Tel: -664: Q1 :11.03.06-24.03.06 :..Quartals-Zufallszeile: 70
Tel: -664: Q2 :25.04.06-08.05.06 :..Quartals-Zufallszeile: 38
Tel: -664: Q3 :23.07.06-05.08.06 :..Quartals-Zufallszeile: 36
Tel: -664: Q4 :28.11.06-11.12.06 :..Quartals-Zufallszeile: 72
Tel: -788: Q1 :24.01.06-06.02.06 :..Quartals-Zufallszeile: 24
Tel: -788: Q2 :24.05.06-06.06.06 :..Quartals-Zufallszeile: 67
Tel: -788: Q3 :16.08.06-29.08.06 :..Quartals-Zufallszeile: 60
Tel: -788: Q4 :22.09.06-05.10.06 :..Quartals-Zufallszeile: 5
Tel: -979: Q1 :18.02.06-03.03.06 :..Quartals-Zufallszeile: 49
Tel: -979: Q2 :29.03.06-11.04.06 :..Quartals-Zufallszeile: 11
Tel: -979: Q3 :11.08.06-24.08.06 :..Quartals-Zufallszeile: 55
Tel: -797: Q1 :09.03.06-22.03.06 :..Quartals-Zufallszeile: 68
Tel: -797: Q2 :19.03.06-01.04.06 :..Quartals-Zufallszeile: 1
Tel: -797: Q3 :01.08.06-14.08.06 :..Quartals-Zufallszeile: 45
Tel: -797: Q4 :14.10.06-27.10.06 :..Quartals-Zufallszeile: 27
Tel: -652: Q1 :08.01.06-21.01.06 :..Quartals-Zufallszeile: 8
Tel: -652: Q2 :28.05.06-10.06.06 :..Quartals-Zufallszeile: 71
Tel: -652: Q3 :19.07.06-01.08.06 :..Quartals-Zufallszeile: 32
Tel: -652: Q4 :09.10.06-22.10.06 :..Quartals-Zufallszeile: 22
Tel: -888: Q1 :04.02.06-17.02.06 :..Quartals-Zufallszeile: 35
Tel: -888: Q2 :15.04.06-28.04.06 :..Quartals-Zufallszeile: 28
Tel: -888: Q3 :24.06.06-07.07.06 :..Quartals-Zufallszeile: 7
Tel: -888: Q4 :23.11.06-06.12.06 :..Quartals-Zufallszeile: 67
Tel: -688: Q1 :17.02.06-02.03.06 :..Quartals-Zufallszeile: 48
Tel: -688: Q2 :19.05.06-01.06.06 :..Quartals-Zufallszeile: 62
Tel: -688: Q3 :03.07.06-16.07.06 :..Quartals-Zufallszeile: 16
Tel: -688: Q4 :13.10.06-26.10.06 :..Quartals-Zufallszeile: 26
Tel: -787: Q1 :26.02.06-11.03.06 :..Quartals-Zufallszeile: 57
Tel: -787: Q2 :04.04.06-17.04.06 :..Quartals-Zufallszeile: 17
Tel: -787: Q4 :29.11.06-12.12.06 :..Quartals-Zufallszeile: 73
Tel: -714: Q1 :06.01.06-19.01.06 :..Quartals-Zufallszeile: 6
Tel: -714: Q2 :22.03.06-04.04.06 :..Quartals-Zufallszeile: 4
Tel: -714: Q3 :15.07.06-28.07.06 :..Quartals-Zufallszeile: 28
Tel: -714: Q4 :21.11.06-04.12.06 :..Quartals-Zufallszeile: 65
Tel: -745: Q1 :18.02.06-03.03.06 :..Quartals-Zufallszeile: 49
Tel: -745: Q2 :04.04.06-17.04.06 :..Quartals-Zufallszeile: 17
Tel: -745: Q3 :28.07.06-10.08.06 :..Quartals-Zufallszeile: 41
Tel: -745: Q4 :28.09.06-11.10.06 :..Quartals-Zufallszeile: 11
...oder, wenn Du es lieber sortiert magst (neuer Aufruf, neue Zufallswerte):
$cmd$ d:\temp\icemanHRO\RandomWeeks.bat|sort
Tel: -503: Q1 :01.01.06-14.01.06 :..Quartals-Zufallszeile: 1
Tel: -503: Q2 :12.04.06-25.04.06 :..Quartals-Zufallszeile: 25
Tel: -503: Q3 :16.08.06-29.08.06 :..Quartals-Zufallszeile: 60
Tel: -503: Q4 :22.11.06-05.12.06 :..Quartals-Zufallszeile: 66
Tel: -531: Q1 :12.01.06-25.01.06 :..Quartals-Zufallszeile: 12
Tel: -531: Q2 :23.04.06-06.05.06 :..Quartals-Zufallszeile: 36
Tel: -531: Q3 :23.07.06-05.08.06 :..Quartals-Zufallszeile: 36
Tel: -531: Q4 :13.10.06-26.10.06 :..Quartals-Zufallszeile: 26
Tel: -609: Q1 :16.03.06-29.03.06 :..Quartals-Zufallszeile: 75
Tel: -609: Q2 :01.04.06-14.04.06 :..Quartals-Zufallszeile: 14
Tel: -609: Q3 :25.06.06-08.07.06 :..Quartals-Zufallszeile: 8
Tel: -609: Q4 :25.10.06-07.11.06 :..Quartals-Zufallszeile: 38
Tel: -728: Q1 :13.01.06-26.01.06 :..Quartals-Zufallszeile: 13
Tel: -900: Q3 :03.07.06-16.07.06 :..Quartals-Zufallszeile: 16
Tel: -900: Q4 :01.10.06-14.10.06 :..Quartals-Zufallszeile: 14
Tel: -906: Q1 :18.01.06-31.01.06 :..Quartals-Zufallszeile: 18
Tel: -906: Q2 :03.04.06-16.04.06 :..Quartals-Zufallszeile: 16
Tel: -906: Q3 :03.07.06-16.07.06 :..Quartals-Zufallszeile: 16
Tel: -906: Q4 :08.10.06-21.10.06 :..Quartals-Zufallszeile: 21
Tel: -915: Q1 :28.01.06-10.02.06 :..Quartals-Zufallszeile: 28
Tel: -915: Q2 :26.05.06-08.06.06 :..Quartals-Zufallszeile: 69
Tel: -915: Q3 :05.07.06-18.07.06 :..Quartals-Zufallszeile: 18
Tel: -915: Q4 :19.11.06-02.12.06 :..Quartals-Zufallszeile: 63
Tel: -993: Q1 :01.03.06-14.03.06 :..Quartals-Zufallszeile: 60
Tel: -993: Q2 :21.03.06-03.04.06 :..Quartals-Zufallszeile: 3
Tel: -993: Q3 :23.06.06-06.07.06 :..Quartals-Zufallszeile: 6
Tel: -993: Q4 :23.11.06-06.12.06 :..Quartals-Zufallszeile: 67
Was Du natürlich anpassen musst, ist Pfad und Name der Hilfsdatei.
Das, was bei mir set "weeklist=d:\temp\icemanHRO\14days.txt" heißt.
Wenn Du das Ganze in eine Datei schreiben willst, dann eben noch ein ">output.txt" dahinter.
HTH Biber
P.S. Sind nun doch 14 Zeilen statt 5 geworden, habe ich aber nur aus Gründen der Lesbarkeit gemacht, glaub mir...
weil Weihachten ist, hab ich noch mal ein bissi Zeit zum Rumbätcheln gehabt..
Ich habe mal auf folgendem Weg einen Mini-Batch zusammengeschreddert:
a) in Excel mal drei Formel-Spalten gefüllt, um "alle Tage ab 1.1.2006" zu berechnen.
Also eine "Nebenrechnungs-Spalte" mit dem Feld-Startwert "1.1.2006", in alle Felder darunter einfach die Formel "={Feld-darüber} plus 1"
auf diese Spalte bezugnehmend kann ich mit zwei kleinen Formeln schnell einen 14-Tage-Zeitraum "anzeigen lassen" und in eine weitere Spalte reinschreiben, in welchem Quartal ("Q1...Q4") dieser 14-Tages-Zeitraum liegt.
Sieht dann als Copy & Paste-Text (oder *.csv-Datei) so aus:
snipp Hilfsdatei 14days.txt
Q1; 01.01.06-14.01.06
Q1; 02.01.06-15.01.06
Q1; 03.01.06-16.01.06
Q1; 04.01.06-17.01.06
Q..........(usw. usw)
...
Q4; 14.12.06-27.12.06
Q4; 15.12.06-28.12.06
Q4; 16.12.06-29.12.06
Q4; 17.12.06-30.12.06
Q4; 18.12.06-31.12.06
snapp Hilfsdatei 14days.txt
b) So, nach dieser lästigen Vorarbeit (geht bestimmt irgendwie auch einfacher, aber ich bin Weihnachten immer so träge...*gg) kann ich endlich einen kleinen Kasper-Batch drüberjagen, der mir in anmutig verschlungenen FOR..IN..DO..-Anweisungen Für 10 Zufalls-Telefonnummer zwischen -500 und -999 für 4 Quartale jeweils einen 14-Tages-Zeitraum ausgibt.
Der Batch-Schnipsel:
::----------- snipp RandomWeeks.bat --------------------------------------
@echo off & Setlocal & set "weeklist=d:\temp\icemanHRO\14days.txt"
set "QZZ=:..Quartals-Zufallszeile:" && Rem kleiner Debugdisplay..
(FOR /L %%a IN (1,1,10) do call :ZehnZufallsNummern) & goto :eof
:ZehnZufallsnummern ...zwischen 500 und 999 über alle Quartale
Set /a "RandomTel=%random% %%500+499"
(FOR /L %%x IN (1,1,4) do call :QuartalsLoop "Q%%x" ) & goto :eof
:Quartalsloop ...Vier Quartale Q1..Q4 abfackeln
set /a "line=0" & set /a "Random2Weeks=%random% %% 76"
(FOR /F "tokens=2 delims=;" %%i in ('Find %1 %weeklist%') do call :Get2Weeks %%i %1) & goto :eof
~~~~~
:Get2Weeks ...je Quartal eine Zeile aus allen des Quartals Q1...Q4
Set /a "Line+=1"
IF [%line%]==[%random2weeks%] ( echo Tel: -%randomTel%: %~2 :%1 %QZZ% %line%) & goto :eof
::--------------snapp RandomWeeks.bat -----------
$cmd$ d:\temp\icemanHRO\RandomWeeks.bat
Tel: -664: Q1 :11.03.06-24.03.06 :..Quartals-Zufallszeile: 70
Tel: -664: Q2 :25.04.06-08.05.06 :..Quartals-Zufallszeile: 38
Tel: -664: Q3 :23.07.06-05.08.06 :..Quartals-Zufallszeile: 36
Tel: -664: Q4 :28.11.06-11.12.06 :..Quartals-Zufallszeile: 72
Tel: -788: Q1 :24.01.06-06.02.06 :..Quartals-Zufallszeile: 24
Tel: -788: Q2 :24.05.06-06.06.06 :..Quartals-Zufallszeile: 67
Tel: -788: Q3 :16.08.06-29.08.06 :..Quartals-Zufallszeile: 60
Tel: -788: Q4 :22.09.06-05.10.06 :..Quartals-Zufallszeile: 5
Tel: -979: Q1 :18.02.06-03.03.06 :..Quartals-Zufallszeile: 49
Tel: -979: Q2 :29.03.06-11.04.06 :..Quartals-Zufallszeile: 11
Tel: -979: Q3 :11.08.06-24.08.06 :..Quartals-Zufallszeile: 55
Tel: -797: Q1 :09.03.06-22.03.06 :..Quartals-Zufallszeile: 68
Tel: -797: Q2 :19.03.06-01.04.06 :..Quartals-Zufallszeile: 1
Tel: -797: Q3 :01.08.06-14.08.06 :..Quartals-Zufallszeile: 45
Tel: -797: Q4 :14.10.06-27.10.06 :..Quartals-Zufallszeile: 27
Tel: -652: Q1 :08.01.06-21.01.06 :..Quartals-Zufallszeile: 8
Tel: -652: Q2 :28.05.06-10.06.06 :..Quartals-Zufallszeile: 71
Tel: -652: Q3 :19.07.06-01.08.06 :..Quartals-Zufallszeile: 32
Tel: -652: Q4 :09.10.06-22.10.06 :..Quartals-Zufallszeile: 22
Tel: -888: Q1 :04.02.06-17.02.06 :..Quartals-Zufallszeile: 35
Tel: -888: Q2 :15.04.06-28.04.06 :..Quartals-Zufallszeile: 28
Tel: -888: Q3 :24.06.06-07.07.06 :..Quartals-Zufallszeile: 7
Tel: -888: Q4 :23.11.06-06.12.06 :..Quartals-Zufallszeile: 67
Tel: -688: Q1 :17.02.06-02.03.06 :..Quartals-Zufallszeile: 48
Tel: -688: Q2 :19.05.06-01.06.06 :..Quartals-Zufallszeile: 62
Tel: -688: Q3 :03.07.06-16.07.06 :..Quartals-Zufallszeile: 16
Tel: -688: Q4 :13.10.06-26.10.06 :..Quartals-Zufallszeile: 26
Tel: -787: Q1 :26.02.06-11.03.06 :..Quartals-Zufallszeile: 57
Tel: -787: Q2 :04.04.06-17.04.06 :..Quartals-Zufallszeile: 17
Tel: -787: Q4 :29.11.06-12.12.06 :..Quartals-Zufallszeile: 73
Tel: -714: Q1 :06.01.06-19.01.06 :..Quartals-Zufallszeile: 6
Tel: -714: Q2 :22.03.06-04.04.06 :..Quartals-Zufallszeile: 4
Tel: -714: Q3 :15.07.06-28.07.06 :..Quartals-Zufallszeile: 28
Tel: -714: Q4 :21.11.06-04.12.06 :..Quartals-Zufallszeile: 65
Tel: -745: Q1 :18.02.06-03.03.06 :..Quartals-Zufallszeile: 49
Tel: -745: Q2 :04.04.06-17.04.06 :..Quartals-Zufallszeile: 17
Tel: -745: Q3 :28.07.06-10.08.06 :..Quartals-Zufallszeile: 41
Tel: -745: Q4 :28.09.06-11.10.06 :..Quartals-Zufallszeile: 11
...oder, wenn Du es lieber sortiert magst (neuer Aufruf, neue Zufallswerte):
$cmd$ d:\temp\icemanHRO\RandomWeeks.bat|sort
Tel: -503: Q1 :01.01.06-14.01.06 :..Quartals-Zufallszeile: 1
Tel: -503: Q2 :12.04.06-25.04.06 :..Quartals-Zufallszeile: 25
Tel: -503: Q3 :16.08.06-29.08.06 :..Quartals-Zufallszeile: 60
Tel: -503: Q4 :22.11.06-05.12.06 :..Quartals-Zufallszeile: 66
Tel: -531: Q1 :12.01.06-25.01.06 :..Quartals-Zufallszeile: 12
Tel: -531: Q2 :23.04.06-06.05.06 :..Quartals-Zufallszeile: 36
Tel: -531: Q3 :23.07.06-05.08.06 :..Quartals-Zufallszeile: 36
Tel: -531: Q4 :13.10.06-26.10.06 :..Quartals-Zufallszeile: 26
Tel: -609: Q1 :16.03.06-29.03.06 :..Quartals-Zufallszeile: 75
Tel: -609: Q2 :01.04.06-14.04.06 :..Quartals-Zufallszeile: 14
Tel: -609: Q3 :25.06.06-08.07.06 :..Quartals-Zufallszeile: 8
Tel: -609: Q4 :25.10.06-07.11.06 :..Quartals-Zufallszeile: 38
Tel: -728: Q1 :13.01.06-26.01.06 :..Quartals-Zufallszeile: 13
Tel: -900: Q3 :03.07.06-16.07.06 :..Quartals-Zufallszeile: 16
Tel: -900: Q4 :01.10.06-14.10.06 :..Quartals-Zufallszeile: 14
Tel: -906: Q1 :18.01.06-31.01.06 :..Quartals-Zufallszeile: 18
Tel: -906: Q2 :03.04.06-16.04.06 :..Quartals-Zufallszeile: 16
Tel: -906: Q3 :03.07.06-16.07.06 :..Quartals-Zufallszeile: 16
Tel: -906: Q4 :08.10.06-21.10.06 :..Quartals-Zufallszeile: 21
Tel: -915: Q1 :28.01.06-10.02.06 :..Quartals-Zufallszeile: 28
Tel: -915: Q2 :26.05.06-08.06.06 :..Quartals-Zufallszeile: 69
Tel: -915: Q3 :05.07.06-18.07.06 :..Quartals-Zufallszeile: 18
Tel: -915: Q4 :19.11.06-02.12.06 :..Quartals-Zufallszeile: 63
Tel: -993: Q1 :01.03.06-14.03.06 :..Quartals-Zufallszeile: 60
Tel: -993: Q2 :21.03.06-03.04.06 :..Quartals-Zufallszeile: 3
Tel: -993: Q3 :23.06.06-06.07.06 :..Quartals-Zufallszeile: 6
Tel: -993: Q4 :23.11.06-06.12.06 :..Quartals-Zufallszeile: 67
Was Du natürlich anpassen musst, ist Pfad und Name der Hilfsdatei.
Das, was bei mir set "weeklist=d:\temp\icemanHRO\14days.txt" heißt.
Wenn Du das Ganze in eine Datei schreiben willst, dann eben noch ein ">output.txt" dahinter.
HTH Biber
P.S. Sind nun doch 14 Zeilen statt 5 geworden, habe ich aber nur aus Gründen der Lesbarkeit gemacht, glaub mir...
Moin Thomas,
freut mich, wenn es passt - auch wenn es als Weihnachtsgeschenk für Dein Chefchen ein bisschen zu spät kam..
Den Batch und die Datei 14days.txt kann ich Dir auch mailen bei Bedarf. Und auf diesen Thread werde ich bestimmt noch mal querverweisen, wenn es um geschachtelte FOR..IN..DO-Anweisungen, %random% oder Modulo-Funktion geht.
Grüße nach Rostock
Frank / der Biber aus Bremen
freut mich, wenn es passt - auch wenn es als Weihnachtsgeschenk für Dein Chefchen ein bisschen zu spät kam..
Den Batch und die Datei 14days.txt kann ich Dir auch mailen bei Bedarf. Und auf diesen Thread werde ich bestimmt noch mal querverweisen, wenn es um geschachtelte FOR..IN..DO-Anweisungen, %random% oder Modulo-Funktion geht.
Grüße nach Rostock
Frank / der Biber aus Bremen