GELÖST Zufallsgenerator für andere Programme flexibel gestalten funktioniert nicht

Diskutiere Zufallsgenerator für andere Programme flexibel gestalten funktioniert nicht im Programmierung Forum im Bereich Software Forum; Hallo Vorsicht, sehr lange Erklärung der Frage^^ Nicht abschreken lassen, ich denke, für Programmierfreudige Leute bietet das auch ein bisschen...
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Hallo

Vorsicht, sehr lange Erklärung der Frage^^
Nicht abschreken lassen, ich denke, für Programmierfreudige Leute bietet das auch ein bisschen an Knobel-Spaß :D

Und zwar versuch ich gerade ein Paket einzelner Code-Pakete in eine Datei zu programmieren, die ich dann einfach aus der Datei von einem anderen Script aufrufen lasse. Das macht spätere Scripte einfacher und überschaulicher.

Und da bin ich gerade bei dem Zufallsgenerator.

EInen Zufallsgenerator zu schreiben ist ja eigendlich kein Ding:

Code:
@echo off
set /a r=%random% %%3
if %r%==1 echo Ausgabe 1
if %r%==2 echo Ausgabe 2
if %r%==3 echo Ausgabe 3
pause
Das wäre dann ein sehr einfach gestrickter Zufallsgenerator, der von einer vorbestimmten Aufgabe eine zufällig auswählt. (Der, der einen zufälligen Code erstellt, der kommt noch^^)

Nun will ich aber keine vorbestimmte Zahl Aufgaben haben, sondern das Ding soll flexibel sein und in jedem Programm verwendbar sein.

Deswegen muss die Anzahl der Möglichkeiten, in dem Beispiel also 3, mit einer Variable änderbar sein.

Das lässt sich einfach lösen:

Code:
@echo off
set /a r=%random% %%%anzahl%
if %r%==1 echo Ausgabe 1
if %r%==2 echo Ausgabe 2
if %r%==3 echo Ausgabe 3
pause
Dabei sind aber die If-Zeilen ein großes Problem denn, wenn ich 10 Möglichkleiten haben will, soll es auch 10 If-Zeilen mit 10 Möglichkeiten geben.

Es muss also ein Zähler her, der von 10 bis zählt und für jede Ziffer eine entsprechende Zeile schreibt.

Da hab ich mir folgendes ausgedacht:

Code:
@pause off
echo @pause off>> Moeglichkeiten.bat
set /P anzahl=
echo Set /a r=%%random%% %%%anzahl%>> Moeglichkeiten.bat
:MögNeu
if not %anzahl%==0 (
    echo if %%r%%==%anzahl% echo Die Moeglichkeit ist %anzahl%>> Moeglichkeiten.bat
    set /a anzahl=%anzahl%-1
    goto :MögNeu
) else (
    goto :MögEnd
)
:MögEnd
pause
echo @pause off>> Moeglichkeiten.bat
Das schreibt @pause off in die Datei, wo der Generator dann erstellt wird, damit der vortlaufende Script ihn dann von dort aufrufen kann.

set /P anzahl=
Gibt die Zahl der Möglichkeiten an. Also die alles verändernde Variable.

echo Set /a r=%%random%% %%%anzahl%>> Moeglichkeiten.bat
Hier wird es schon schwieriger.
Diese Zeile soll in die neue Datei diesen Befehl rein schreiben:
set /a r=%random% %%3
Allerdings nicht die 3, sondern die Zahl, die mit der Variable anzahl fest gelegt wurde, doch das funktioniert nicht richtig, sodass auch keine Zahl in dem Bereich definiert wird.

Code:
:MögNeu
if not %anzahl%==0 (
    echo if %%r%%==%anzahl% echo Die Moeglichkeit ist %anzahl%>> Moeglichkeiten.bat
    set /a anzahl=%anzahl%-1
    goto :MögNeu
) else (
    goto :MögEnd
)
:MögEnd
Da scheint das größte Problem zu liegen.
die erste Abfrage testet nur, dass anzahl nicht gleich null ist, denn so würde es Null Möglichkeiten geben. Wenn dem so ist, soll sie wieder eine If-Aufgabe in die neue Datei schreiben:
Und zwar ist das folgende Zeile:
if %r%==%anzahl% echo Die Moeglichkeit ist %anzahl%
%r% soll als Variable bleiben, damit die zufällig generierte Nummer dort dann beim Ausführen des Generators eingetragen werden kann. Aber die Variable %anzahl% soll dort nicht sein. sie soll noch vor dem schreiben mit der Zahl getauscht werden, die vorher definiert wurde.
Wenn anzahl=20 ist, dann soll das stehen:
if %r%==20 echo Die Moeglichkeit ist 20
Und so weiter. Und endweder wird die Variable in den % gezeigt, oder es wird gar nichts gezeigt. Wie ich es drehe und wende, es geht nicht.

Zumindest soll nach dem schreiben dieser Zeile eins von der Anzahl abgezogen werden.

Der Punkt goto :MögNeu führt dann zum Anfang zurück und wenn die Zahl nicht gleich 0 ist, wird die Nächste Zeile, dann aber mit 19, statt 20 geschrieben, womit die zweite Möglichkeit definiert wurde.

und so geht es weiter, bis er bei 0 angekommen ist und zum Ende verweist.


Der Zufallsgenerator endet dort und gibt alles an den ursprünglichen Script weiter, der die neu geschriebene Datei startet, den Befehl (goto) einer zufällig fest gelegten Zahl bekommt und dann normal weiter läuft.



Wenn ich es schaffe, so einen Generator zu schreiben, reicht es, wenn ich ihn einfach in einer neuen Datei verlinke, vorher die Anzahl definiere und nachher die verschiedenen Möglichkeiten fest lege. Der Generator wählt dann die Möglichkeiten aus.

So muss man nicht immer einen neuen Zufalsgenerator schreiben, da es bei vielen Möglichkeiten, nervig und auch viel wird.


---


Ich hoffe, mir konnte jemand folgen, denn das ist bis jetzt das wohl komplizierteste Programm, was ich in der Sprache jeh gesehen habe und ich bin seit Gestern Abend dran am verzweifeln, weil das Ding einfach nicht das tut, was es soll.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Also, ich habs nun doch noch selbst hin bekommen und bei fest gestellt, dass ich es mir viel komplizierter gemacht habe, als nötig.Viiiiel komplizierter als nötig^^

Aber ich werd das Ergebnis trotzdem behalten, vieleicht brauch ich es mal.


Wen es jemanden interessiert:

Code:
@echo off
set /P anzahl="Geben sie eine Zahl bis 32767 ein: "

echo :anf>> Moeglichkeiten.bat
echo @echo off>> Moeglichkeiten.bat
echo Set /a r=%%random%% %%%%%anzahl%>> Moeglichkeiten.bat
:MögNeu
if not %anzahl%==0 (
    echo if %%r%%==%anzahl% echo %anzahl% >> Moeglichkeiten.bat
    set /a anzahl=%anzahl%-1
    goto :mögneu
) else (
    echo if %%r%%==0 goto :anf >> Moeglichkeiten.bat
    goto :mögend
)
:mögend

call Moeglichkeiten.bat
echo j | del Moeglichkeiten.bat

pause
Wenn ich dann die Anzahl der Möglichkeiten angebe, dann schreibt er die Datei, die den Zufallsgenerator und die Möglichkeiten enthält, startet sie und löscht sie danach.


Nicht grade sehr elegant und als ich mir das überlegt hab, hab ich wohl nicht bis zuende gedacht, da es ja auch viel einfacher geht^^
Aber die Datei tut das, was sie tun sollte, als ich hier gefragt hab, also ist es gelöst.
 
Thema:

Zufallsgenerator für andere Programme flexibel gestalten funktioniert nicht

Zufallsgenerator für andere Programme flexibel gestalten funktioniert nicht - Ähnliche Themen

  • [Windows 10 Home] GPResult kennt Parameter H für Gruppenrichtlinien-Bericht nicht

    [Windows 10 Home] GPResult kennt Parameter H für Gruppenrichtlinien-Bericht nicht: Hallo liebe Community, wenn ich unter Windows 10 Home Version 1909 Systembuild 18363.418 als Administrator in der Kommandozeile (CMD) den Befehl...
  • Windows versucht Update für falsche Office-Version

    Windows versucht Update für falsche Office-Version: Ich bin vor längerer Zeit von Office 2010 auf Office 2013 umgestiegen und habe dazu Office 2010 deinstalliert. Vor ein paar Tagen habe ich nun...
  • Windows 10 Home Build 1511 Läuft eher wie ein Zufallsgenerator

    Windows 10 Home Build 1511 Läuft eher wie ein Zufallsgenerator: Vor gut einem Jahr habe ich mir ein Microsoft Surface 3 zugelegt. Vorinstalliert war Windows 8.1. Das Upgrade auf Windows 10 gab es dazu. Nach...
  • NSA-Backdoor in Vistas Zufallsgenerator?

    NSA-Backdoor in Vistas Zufallsgenerator?: NSA-Backdoor in Vistas Zufallsgenerator? Bruce Schneier warnt Der Random Number Generator von Windows geriet vor einiger Zeit in die Kritik - die...
  • Microsoft: Fehler im Zufallsgenerator betrifft auch Windows XP

    Microsoft: Fehler im Zufallsgenerator betrifft auch Windows XP: Microsoft Fehler im Zufallsgenerator betrifft auch Windows XP Nachdem israelische Forscher einen Fehler im Pseudo-Zufallsgenerator von Windows...
  • Ähnliche Themen

    Oben