Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Liste nach Zufallsprinzip

Frage Entwicklung

Mitglied: icemanHRO

icemanHRO (Level 2) - Jetzt verbinden

19.12.2005, aktualisiert 17.10.2012, 9972 Aufrufe, 11 Kommentare

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
Mitglied: duddits
19.12.2005 um 15:12 Uhr
Hi,

in welcher Sprache soll das den realisiert werden ?


Mit freundlichen Grüßen duddits
Bitte warten ..
Mitglied: icemanHRO
19.12.2005 um 21:28 Uhr
@duddits

Die Sprache ist egal, muss nur funktionieren Ich bin gerade dabei es in Excel zu realiesieren, ist aber kein muss.
Bitte warten ..
Mitglied: Biber
21.12.2005, aktualisiert 17.10.2012
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 <a href=http://www.administrator.de/forum/gibt-es-keine-arrays-in-batch-%3f-and ... target="blank">Arrayvariablen im Batch</a>.

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
Bitte warten ..
Mitglied: icemanHRO
23.12.2005 um 10:36 Uhr
Es soll ein Tool zur Überwachung sein. Die Nummern von 500 bis 999 sind die Telefonnummern und daher brauch ich pro Nummer immer zwei zusammenhängende Wochen zwischen 1 und 12. Aber die Nummern und die Wochen müssen seperat generiert werden.
Hab es in Excel auch schon hinbekommen, aber das kann ich so meinem Chefchen nicht anbieten. Er möchte ja gern ein "schönes" Programm haben was er nur starten muss und was ihm dann die Liste mit den dazugehörigen Wochen ausgibt. Nach dieser Liste gibt ihm dann die Telefonabteilung die gewählten Nummern raus udn die gehen dann zur Überprüfung an den Vorgesetzten der jeweiligen Nummer. Hintergrund ist, das ja private Gespräche nicht erlaubt sind udn wir den Eindruck habn das sich nicht daran gehalten wird. daher möchten wir 10 zufällige Nummern pro Quatal überprüfen.
Bitte warten ..
Mitglied: Biber
23.12.2005 um 16:08 Uhr
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
Bitte warten ..
Mitglied: icemanHRO
24.12.2005 um 11:56 Uhr
Stimmt ja, aber er möchte gerne ein von alleine laufendes Programm haben, wo er go sagt und es unten fertig rauskommt...
So in Art von einer Batch oder Shell....
Bitte warten ..
Mitglied: Biber
24.12.2005 um 12:15 Uhr
Ööö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
Bitte warten ..
Mitglied: Biber
24.12.2005 um 12:33 Uhr
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
Bitte warten ..
Mitglied: Biber
26.12.2005 um 18:16 Uhr
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:
01.
::----------- snipp RandomWeeks.bat -------------------------------------- 
02.
@echo off & Setlocal & set "weeklist=d:\temp\icemanHRO\14days.txt" 
03.
set "QZZ=:..Quartals-Zufallszeile:" && Rem kleiner Debugdisplay.. 
04.
(FOR /L %%a IN (1,1,10) do call :ZehnZufallsNummern) & goto :eof 
05.
:ZehnZufallsnummern ...zwischen 500 und 999 über alle Quartale 
06.
Set /a "RandomTel=%random% %%500+499" 
07.
(FOR /L %%x IN (1,1,4) do call :QuartalsLoop "Q%%x" ) & goto :eof 
08.
:Quartalsloop ...Vier Quartale Q1..Q4 abfackeln 
09.
set /a "line=0" & set /a "Random2Weeks=%random% %% 76" 
10.
(FOR /F "tokens=2 delims=;" %%i in ('Find %1 %weeklist%') do call :Get2Weeks %%i %1) & goto :eof 
11.
~~~~~ 
12.
:Get2Weeks ...je Quartal eine Zeile aus allen des Quartals Q1...Q4 
13.
Set /a "Line+=1"  
14.
IF [%line%]==[%random2weeks%] ( echo Tel: -%randomTel%: %~2 :%1 %QZZ% %line%) & goto :eof 
15.
::--------------snapp RandomWeeks.bat -----------
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...
Bitte warten ..
Mitglied: icemanHRO
28.12.2005 um 14:10 Uhr
Vielen dank Frank,

das war genau das was ich gesucht hab...
Bitte warten ..
Mitglied: Biber
28.12.2005 um 19:28 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Netzwerk
gelöst Excel Liste soll Partnerfirma zugänglich gemacht werden (3)

Frage von Knorkator zum Thema Windows Netzwerk ...

Batch & Shell
XML nach Liste mit Werten durchsuchen (12)

Frage von bocker zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...